重點分析一下引用,能夠看到,該工程是引用了UnityEngine/UnityEngine.UI/Assembly-CSharp等幾個U3D遊戲主工程中的dll的,這樣,能夠在工程中直接調用對應的u3d相關的dll下的類和方法,示例代碼:git
只要using UnityEngine申明後,下面的代碼就能夠繼承MonoBehaviour類,天然能夠調用其中的相關類和方法。那麼到這一步,就能夠理解,在HotFix_Project中,咱們是能夠調用U3D遊戲主工程的類和方法的,只要添加其相關的dll到工程的引用中。這樣咱們就完成了HotFix對U3D遊戲主工程的調用的一條線路。github
Debug.Log("熱更DLL中的類型咱們均須要經過AppDomain取得"); var it = appdomain.LoadedTypes["HotFix_Project.InstanceClass"]; Debug.Log("LoadedTypes返回的是IType類型,可是咱們須要得到對應的System.Type才能繼續使用反射接口"); var type = it.ReflectionType; Debug.Log("取得Type以後就能夠按照咱們熟悉的方式來反射調用了"); var ctor = type.GetConstructor(new System.Type[0]); var obj = ctor.Invoke(null); Debug.Log("打印一下結果"); Debug.Log(obj); Debug.Log("咱們試一下用反射給字段賦值"); var fi = type.GetField("id", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance); fi.SetValue(obj, 111111); Debug.Log("咱們用反射調用屬性檢查剛剛的賦值"); var pi = type.GetProperty("ID"); Debug.Log("ID = " + pi.GetValue(obj, null));