public static void GenerateCrossbindAdapter() { // 由于跨域继承特殊性太多,自动生成无法实现完全无副作用生成,所以这里提供的代码自动生成主要是给大家生成个初始模版,简化大家的工作 // 大多数情况直接使用自动生成的模版即可,如果遇到问题可以手动去修改生成后的文件,因此这里需要大家自行处理是否覆盖的问题 List <Type> classType = new List <Type>(); ILRLaunch.collectCrossInheritClass(classType); foreach (var item in classType) { generateAdapter(item); } AssetDatabase.Refresh(); }
public static void GenerateCLRBindingByAnalysis() { // 用新的分析热更dll调用引用来生成绑定代码 ILRAppDomain domain = new ILRAppDomain(); string dllPath = FrameDefine.P_STREAMING_ASSETS_PATH + FrameDefine.ILR_FILE_NAME; using (FileStream fs = new FileStream(dllPath, FileMode.Open, FileAccess.Read)) { domain.LoadAssembly(fs); //这里需要注册所有热更DLL中用到的跨域继承Adapter,否则无法正确抓取引用 ILRLaunch.registeCrossAdaptor(domain); BindingCodeGenerator.GenerateBindingCode(domain, FrameDefine.P_SCRIPT_GAME_PATH + "ILRuntime/GeneratedCLRBinding"); } AssetDatabase.Refresh(); }