Esempio n. 1
0
    public static void GenerateCrossbindAdapter()
    {
        // 由于跨域继承特殊性太多,自动生成无法实现完全无副作用生成,所以这里提供的代码自动生成主要是给大家生成个初始模版,简化大家的工作
        // 大多数情况直接使用自动生成的模版即可,如果遇到问题可以手动去修改生成后的文件,因此这里需要大家自行处理是否覆盖的问题
        List <Type> classType = new List <Type>();

        ILRLaunch.collectCrossInheritClass(classType);
        foreach (var item in classType)
        {
            generateAdapter(item);
        }
        AssetDatabase.Refresh();
    }
Esempio n. 2
0
    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();
    }