重点分析一下引用,能够看到,该工程是引用了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));