| 123456789101112131415161718192021222324252627282930313233343536373839 | #if UNITY_EDITORusing UnityEditor;//using ILRuntime.Generated.CrossBinding;using System.Collections.Generic;[System.Reflection.Obfuscation(Exclude = true)]public class ILRuntimeCLRBinding{   [MenuItem("ILRuntime/通过自动分析热更DLL生成CLR绑定")]    static void GenerateCLRBindingByAnalysis()    {        //用新的分析热更dll调用引用来生成绑定代码        ILRuntime.Runtime.Enviorment.AppDomain domain = new ILRuntime.Runtime.Enviorment.AppDomain();        using (System.IO.FileStream fs = new System.IO.FileStream("Assets/Res/Code/Game.HotUpdate.dll.bytes", System.IO.FileMode.Open, System.IO.FileAccess.Read))        {            domain.LoadAssembly(fs);            //Crossbind Adapter is needed to generate the correct binding code            InitILRuntime(domain);            ILRuntime.Runtime.CLRBinding.BindingCodeGenerator.GenerateBindingCode(domain, "Assets/Game/Launcher/ILRuntime/Generated");        }        AssetDatabase.Refresh();    }    static void InitILRuntime(ILRuntime.Runtime.Enviorment.AppDomain appdomain)    {        //这里需要注册所有热更DLL中用到的跨域继承Adapter,否则无法正确抓取引用        //appdomain.RegisterCrossBindingAdaptor(new MonoBehaviourAdapter());        //appdomain.RegisterCrossBindingAdaptor(new CoroutineAdapter());        //appdomain.RegisterCrossBindingAdaptor(new GComponentAdapter());        //appdomain.RegisterCrossBindingAdaptor(new IEnumerator());        //appdomain.RegisterCrossBindingAdaptor(new ScriptableObjectAdapter());        //appdomain.RegisterCrossBindingAdaptor(new WindowAdapter());        //appdomain.RegisterValueTypeBinder(typeof(Vector3), new Vector3Binder());    }}#endif
 |