コード例 #1
0
    public void DrawILRuntime()
    {
#if ILRuntime
        GUILayout.BeginHorizontal("HelpBox");
        EditorGUILayout.LabelField("== ILRuntime ==");
        GUILayout.EndHorizontal();

        GUILayout.BeginHorizontal();
        if (GUILayout.Button("生成Dll", GUILayout.ExpandWidth(true), GUILayout.MaxHeight(30)))
        {
            ILRuntimeEditor.GenDll();
        }

        if (GUILayout.Button("打包dll为ab", GUILayout.ExpandWidth(true), GUILayout.MaxHeight(30)))
        {
            ILRuntimeEditor.BuildDllToAb();
        }
        GUILayout.EndHorizontal();
        GUILayout.BeginHorizontal();
        if (GUILayout.Button("生成CLR绑定", GUILayout.ExpandWidth(true), GUILayout.MaxHeight(30)))
        {
            ILRuntimeEditor.GenerateCLRBindingByAnalysis();
        }

        if (GUILayout.Button("生成适配器", GUILayout.ExpandWidth(true), GUILayout.MaxHeight(30)))
        {
            ILRuntimeEditor.GenerateCrossbindAdapter();
        }
        if (GUILayout.Button("删除生成代码", GUILayout.ExpandWidth(true), GUILayout.MaxHeight(30)))
        {
            ILRuntimeEditor.ClearGenCode();
        }
        GUILayout.EndHorizontal();
#endif
    }
コード例 #2
0
ファイル: KAutoBuilder.cs プロジェクト: mr-kelly/KSFramework
        /// <summary>
        /// return full path or build
        /// </summary>
        /// <param name="outputpath"></param>
        /// <param name="tag"></param>
        /// <param name="opt"></param>
        /// <returns></returns>
        private static string PerformBuild(string outputpath, BuildTargetGroup buildTargetGroup, BuildTarget tag, BuildOptions opt)
        {
#if UNITY_2018_1_OR_NEWER
            EditorUserBuildSettings.SwitchActiveBuildTarget(buildTargetGroup, tag);
#else
            EditorUserBuildSettings.SwitchActiveBuildTarget(tag);
#endif
            //for release build min log output ,can modify
            PlayerSettings.SetStackTraceLogType(LogType.Error, StackTraceLogType.ScriptOnly);
            PlayerSettings.SetStackTraceLogType(LogType.Exception, StackTraceLogType.ScriptOnly);
            PlayerSettings.SetStackTraceLogType(LogType.Warning, StackTraceLogType.ScriptOnly);
            PlayerSettings.SetStackTraceLogType(LogType.Assert, StackTraceLogType.ScriptOnly);
            //建议所有的log.info日志前都要添加 if(AppConfig.isEditor)的判断,上线产品中关闭log。PS.不判断的话关闭输出后还有调用log接口传递字符串拼接的消耗
            PlayerSettings.SetStackTraceLogType(LogType.Log, StackTraceLogType.ScriptOnly /*StackTraceLogType.None*/);

            if (AppConfig.IsDownloadRes && !File.Exists(AppConfig.VersionTextPath))
            {
                Log.LogError("打包失败,可下载更新的包,需要先生成vresion.txt");
                return(null);
            }
            //OnBeforeBuildPlayerEvent Unity引擎的打包前事件
            ParseArgs(ref opt, ref outputpath);
            string fullPath = System.IO.Path.Combine(AppConfig.ProductRelPath, outputpath);
            string fullDir  = System.IO.Path.GetDirectoryName(fullPath);

            if (!Directory.Exists(fullDir))
            {
                Directory.CreateDirectory(fullDir);
            }

            Log.Info("Start Build Client {0} to: {1}", tag, Path.GetFullPath(fullPath));
#if xLua
            // NOTE xlua在编辑器开发模式不生成代码,因为.NET Standard 2.0不支持emit,会导致某些CSharpCallLua注册失败,Api要改成.Net4.X,在打包时如果有需要再修改回
            // 需要先clear,再gen,避免同一个class修改后,覆盖gen会报错
            XLua.DelegateBridge.Gen_Flag = true;
            CSObjectWrapEditor.Generator.ClearAll();
            CSObjectWrapEditor.Generator.GenAll();
#elif ILRuntime
            ILRuntimeEditor.GenerateCLRBindingByAnalysis();
            ILRuntimeEditor.GenerateCrossbindAdapter();
#endif
            var buildResult = BuildPipeline.BuildPlayer(GetScenePaths(), fullPath, tag, opt);
#if xLua
            if (buildResult.summary.result == BuildResult.Succeeded)
            {
                CSObjectWrapEditor.Generator.ClearAll();
            }
#endif
            Log.Info("Build App result:{0} ,errors:{1}", buildResult.summary.result, buildResult.summary.totalErrors);
            return(fullPath);
        }
コード例 #3
0
    public void DrawILRuntime()
    {
#if ILRuntime
        GUILayout.BeginHorizontal("HelpBox");
        EditorGUILayout.LabelField("== ILRuntime ==");
        GUILayout.EndHorizontal();

        GUILayout.BeginHorizontal();
        if (GUILayout.Button("生成Dll", GUILayout.ExpandWidth(true), GUILayout.MaxHeight(30)))
        {
            ILRuntimeEditor.GenDll();
        }

        if (GUILayout.Button("打包dll为ab", GUILayout.ExpandWidth(true), GUILayout.MaxHeight(30)))
        {
            ILRuntimeEditor.BuildDllToAb();
        }
        GUILayout.EndHorizontal();
        GUILayout.BeginHorizontal();
        if (GUILayout.Button("生成CLR绑定", GUILayout.ExpandWidth(true), GUILayout.MaxHeight(30)))
        {
            ILRuntimeEditor.GenerateCLRBindingByAnalysis();
        }

        if (GUILayout.Button("生成适配器", GUILayout.ExpandWidth(true), GUILayout.MaxHeight(30)))
        {
            ILRuntimeEditor.GenerateCrossbindAdapter();
        }
        if (GUILayout.Button("删除生成代码", GUILayout.ExpandWidth(true), GUILayout.MaxHeight(30)))
        {
            ILRuntimeEditor.ClearGenCode();
        }
        GUILayout.EndHorizontal();
        GUILayout.BeginHorizontal();
        if (GUILayout.Button("开启调试", GUILayout.ExpandWidth(true), GUILayout.MaxHeight(30)))
        {
            KDefineSymbolsHelper.AddDefineSymbols(new string[] { "ILRuntime", "DEBUG" });
        }

        if (GUILayout.Button("默认设置", GUILayout.ExpandWidth(true), GUILayout.MaxHeight(30)))
        {
            KDefineSymbolsHelper.AddDefineSymbols(new string[] { "ILRuntime" });
        }
        if (GUILayout.Button("最佳性能", GUILayout.ExpandWidth(true), GUILayout.MaxHeight(30)))
        {
            KDefineSymbolsHelper.AddDefineSymbols(new string[] { "ILRuntime", "DISABLE_ILRUNTIME_DEBUG" });
        }
        GUILayout.EndHorizontal();
#endif
    }
コード例 #4
0
        /// <summary>
        /// return full path or build
        /// </summary>
        /// <param name="outputpath"></param>
        /// <param name="tag"></param>
        /// <param name="opt"></param>
        /// <returns></returns>
        private static string PerformBuild(string outputpath, BuildTargetGroup buildTargetGroup, BuildTarget tag, BuildOptions opt)
        {
#if UNITY_2018_1_OR_NEWER
            EditorUserBuildSettings.SwitchActiveBuildTarget(buildTargetGroup, tag);
#else
            EditorUserBuildSettings.SwitchActiveBuildTarget(tag);
#endif
            //已监听Unity引擎的打包前事件:OnBeforeBuildPlayerEvent
            ParseArgs(ref opt, ref outputpath);
            string fullPath = System.IO.Path.Combine(AppConfig.ProductRelPath, outputpath);
            string fullDir  = System.IO.Path.GetDirectoryName(fullPath);

            if (!Directory.Exists(fullDir))
            {
                Directory.CreateDirectory(fullDir);
            }

            Log.Info("Start Build Client {0} to: {1}", tag, Path.GetFullPath(fullPath));
#if xLua
            // NOTE xlua在编辑器开发模式不生成代码,因为.NET Standard 2.0不支持emit,会导致某些CSharpCallLua注册失败,Api要改成.Net4.X,在打包时如果有需要再修改回
            // 需要先clear,再gen,避免同一个class修改后,覆盖gen会报错
            XLua.DelegateBridge.Gen_Flag = true;
            CSObjectWrapEditor.Generator.ClearAll();
            CSObjectWrapEditor.Generator.GenAll();
#elif ILRuntime
            ILRuntimeEditor.GenerateCLRBindingByAnalysis();
            ILRuntimeEditor.GenerateCrossbindAdapter();
#endif
            var buildResult = BuildPipeline.BuildPlayer(GetScenePaths(), fullPath, tag, opt);
#if xLua
            if (buildResult.summary.result == BuildResult.Succeeded)
            {
                CSObjectWrapEditor.Generator.ClearAll();
            }
#endif
            Log.Info("Build App result:{0} ,errors:{1}", buildResult.summary.result, buildResult.summary.totalErrors);
            return(fullPath);
        }