コード例 #1
0
ファイル: ServerCommandLineEditor.cs プロジェクト: wqaetly/ET
        public void OnGUI()
        {
            if (GUILayout.Button("启动守护进程"))
            {
                string arguments = $"--AppType=Watcher --Process=1 --Console=1";
                ProcessHelper.Run("Server.exe", arguments, "../Bin/");
            }

            if (GUILayout.Button("启动机器人"))
            {
                string arguments = $"--AppType=Robot --Process=2 --Console=1";
                ProcessHelper.Run("Robot.exe", arguments, "../Bin/");
            }

            if (GUILayout.Button("启动服务器"))
            {
                string arguments = $"--AppType=Server --Console=1";
                ProcessHelper.Run("Server.exe", arguments, "../Bin/");
            }

            if (GUILayout.Button("构建DLL"))
            {
                BuildAssemblieEditor.BuildMuteAssembly();
            }

            if (GUILayout.Button("刷新资源"))
            {
                AssetDatabase.Refresh();
            }
        }
コード例 #2
0
        public static void BuildCode(CodeOptimization codeOptimization, GlobalConfig globalConfig)
        {
            List <string> codes;

            switch (globalConfig.CodeMode)
            {
            case CodeMode.Client:
                codes = new List <string>()
                {
                    "Model/Generate/Client",
                    "Model/Share",
                    "Hotfix/Share",
                    "Model/Client",
                    "ModelView/Client",
                    "Hotfix/Client",
                    "HotfixView/Client"
                };
                codes = GetRelativeDirs(codes);
                break;

            case CodeMode.Server:
                codes = new List <string>()
                {
                    "Model/Generate/Server",
                    "Model/Share",
                    "Hotfix/Share",
                    "Model/Server",
                    "Hotfix/Server",
                    "Model/Client",
                    "Hotfix/Client",
                };
                codes = GetRelativeDirs(codes);
                break;

            case CodeMode.ClientServer:
                codes = new List <string>()
                {
                    "Model/Generate/Server",
                    "Model/Share",
                    "Hotfix/Share",
                    "Model/Client",
                    "ModelView/Client",
                    "Hotfix/Client",
                    "HotfixView/Client",
                    "Model/Server",
                    "Hotfix/Server",
                };
                codes = GetRelativeDirs(codes);
                break;

            default:
                throw new Exception("not found enum");
            }

            BuildAssemblieEditor.BuildMuteAssembly("Code", codes, Array.Empty <string>(), codeOptimization);

            AfterCompiling();

            AssetDatabase.Refresh();
        }
コード例 #3
0
 public static void BuildData()
 {
     BuildAssemblieEditor.BuildMuteAssembly("Data", new []
     {
         "Codes/Model/",
         "Codes/ModelView/",
     }, Array.Empty <string>(), CodeOptimization.Debug);
 }
コード例 #4
0
ファイル: BuildAssemblieEditor.cs プロジェクト: chanayy123/ET
 public static void BuildDll()
 {
     BuildAssemblieEditor.BuildMuteAssembly("Code", new []
     {
         "Codes/Model/",
         "Codes/ModelView/",
         "Codes/Hotfix/",
         "Codes/HotfixView/"
     });
     AssetDatabase.Refresh();
 }
コード例 #5
0
        public static void BuildHotfix(CodeOptimization codeOptimization, GlobalConfig globalConfig)
        {
            string[] logicFiles = Directory.GetFiles(Define.BuildOutputDir, "Hotfix_*");
            foreach (string file in logicFiles)
            {
                File.Delete(file);
            }

            int    random    = RandomHelper.RandomNumber(100000000, 999999999);
            string logicFile = $"Hotfix_{random}";

            List <string> codes;

            switch (globalConfig.CodeMode)
            {
            case CodeMode.Client:
                codes = new List <string>()
                {
                    "Hotfix/Share/",
                    "Hotfix/Client/",
                    "HotfixView/Client/",
                };
                codes = GetRelativeDirs(codes);
                break;

            case CodeMode.Server:
                codes = new List <string>()
                {
                    "Hotfix/Share/",
                    "Hotfix/Server/",
                    "Hotfix/Client/",
                };
                codes = GetRelativeDirs(codes);
                break;

            case CodeMode.ClientServer:
                codes = new List <string>()
                {
                    "Hotfix/Share/",
                    "Hotfix/Client/",
                    "HotfixView/Client/",
                    "Hotfix/Server/",
                };
                codes = GetRelativeDirs(codes);
                break;

            default:
                throw new Exception("not found enum");
            }

            BuildAssemblieEditor.BuildMuteAssembly(logicFile, codes, new[] { Path.Combine(Define.BuildOutputDir, "Model.dll") }, codeOptimization);
        }
コード例 #6
0
        public static void BuildCodeRelease()
        {
            BuildAssemblieEditor.BuildMuteAssembly("Code", new []
            {
                "Codes/Model/",
                "Codes/ModelView/",
                "Codes/Hotfix/",
                "Codes/HotfixView/"
            }, Array.Empty <string>(), CodeOptimization.Release);

            AfterCompiling();

            AssetDatabase.Refresh();
        }
コード例 #7
0
ファイル: EditorNotification.cs プロジェクト: wikieden/ET
 /// <summary>
 /// Unity窗口聚焦状态改变回调
 /// </summary>
 /// <param name="focus"></param>
 private static void OnEditorFocus(bool focus)
 {
     if (focus)
     {
         //每次切回来Unity,自动执行脚本编译
         // Debug.Log($"编辑器激活状态:{focus}");
         bool autoBuild = PlayerPrefs.HasKey("AutoBuild");
         if (!autoBuild)
         {
             return;
         }
         BuildAssemblieEditor.BuildCodeDebug();
     }
 }
コード例 #8
0
        public static void BuildCodeRelease()
        {
            string jstr         = File.ReadAllText("Assets/AssetsPackage/config.bytes");
            var    config       = LitJson.JsonMapper.ToObject <Dictionary <string, string> >(jstr);
            string assemblyName = "Code" + config["ResVer"];

            BuildAssemblieEditor.BuildMuteAssembly(assemblyName, new []
            {
                "Codes/Model/",
                "Codes/ModelView/",
                "Codes/Hotfix/",
                "Codes/HotfixView/"
            }, Array.Empty <string>(), CodeOptimization.Release);

            AfterCompiling(assemblyName);
        }
コード例 #9
0
        public static void BuildLogic()
        {
            string[] logicFiles = Directory.GetFiles(Define.BuildOutputDir, "Logic_*");
            foreach (string file in logicFiles)
            {
                File.Delete(file);
            }

            int    random    = RandomHelper.RandomNumber(100000000, 999999999);
            string logicFile = $"Logic_{random}";

            BuildAssemblieEditor.BuildMuteAssembly(logicFile, new []
            {
                "Codes/Hotfix/",
                "Codes/HotfixView/",
            }, new[] { Path.Combine(Define.BuildOutputDir, "Data.dll") }, CodeOptimization.Debug);
        }
コード例 #10
0
        public static void BuildModel(CodeOptimization codeOptimization, GlobalConfig globalConfig)
        {
            List <string> codes;

            switch (globalConfig.CodeMode)
            {
            case CodeMode.Client:
                codes = new List <string>()
                {
                    "Model/Generate/Client/",
                    "Model/Share/",
                    "Model/Client/",
                    "ModelView/Client/",
                };
                codes = GetRelativeDirs(codes);
                break;

            case CodeMode.Server:
                codes = new List <string>()
                {
                    "Model/Generate/Server/",
                    "Model/Share/",
                    "Model/Server/",
                    "Model/Client/",
                };
                codes = GetRelativeDirs(codes);
                break;

            case CodeMode.ClientServer:
                codes = new List <string>()
                {
                    "Model/Share/",
                    "Model/Client/",
                    "ModelView/Client/",
                    "Model/Generate/Server/",
                    "Model/Server/",
                };
                codes = GetRelativeDirs(codes);
                break;

            default:
                throw new Exception("not found enum");
            }

            BuildAssemblieEditor.BuildMuteAssembly("Model", codes, Array.Empty <string>(), codeOptimization);
        }
コード例 #11
0
ファイル: BuildHelper.cs プロジェクト: 526077247/ET
        static void BuildHandle(PlatformType type, BuildOptions buildOptions, bool isBuildExe, bool clearFolder, bool isInject)
        {
            BuildTarget buildTarget = BuildTarget.StandaloneWindows;
            string      programName = "ET";
            string      exeName     = programName;
            string      platform    = "";

            switch (type)
            {
            case PlatformType.PC:
                buildTarget = BuildTarget.StandaloneWindows64;
                exeName    += ".exe";
                IFixEditor.Patch();
                platform = "pc";
                break;

            case PlatformType.Android:
                KeystoreSetting();
                buildTarget = BuildTarget.Android;
                exeName    += ".apk";
                IFixEditor.CompileToAndroid();
                platform = "android";
                break;

            case PlatformType.IOS:
                buildTarget = BuildTarget.iOS;
                IFixEditor.CompileToIOS();
                platform = "ios";
                break;

            case PlatformType.MacOS:
                buildTarget = BuildTarget.StandaloneOSX;
                IFixEditor.Patch();
                platform = "pc";
                break;
            }
            //打程序集
            BuildAssemblieEditor.BuildCodeRelease();
            if (isInject)
            {
                //Inject
                IFixEditor.InjectAssemblys();
            }
            HandleProject();
            //string fold = string.Format(BuildFolder, type);

            if (clearFolder && Directory.Exists(relativeDirPrefix))
            {
                Directory.Delete(relativeDirPrefix, true);
                Directory.CreateDirectory(relativeDirPrefix);
            }
            else
            {
                Directory.CreateDirectory(relativeDirPrefix);
            }

            if (isBuildExe)
            {
                AssetDatabase.Refresh();
                string[] levels =
                {
                    "Assets/AssetsPackage/Scenes/InitScene/Init.unity",
                };
                UnityEngine.Debug.Log("开始EXE打包");
                BuildPipeline.BuildPlayer(levels, $"{relativeDirPrefix}/{exeName}", buildTarget, buildOptions);
                UnityEngine.Debug.Log("完成exe打包");
            }

            string jstr     = File.ReadAllText("Assets/AssetsPackage/config.bytes");
            var    obj      = LitJson.JsonMapper.ToObject <Dictionary <string, string> >(jstr);
            string version  = obj["ResVer"];
            var    settings = AASUtility.GetSettings();
            string fold     = Directory.GetParent(settings.RemoteCatalogBuildPath.GetValue(settings)).FullName;

            string targetPath = Path.Combine(relativeDirPrefix, $"{version}_{platform}");

            if (!Directory.Exists(targetPath))
            {
                Directory.CreateDirectory(targetPath);
            }
            FileHelper.CleanDirectory(targetPath);
            FileHelper.CopyFiles(fold, targetPath);

            UnityEngine.Debug.Log("完成cdn资源打包");
        }
コード例 #12
0
ファイル: BuildEditor.cs プロジェクト: x00568/ET
        private void OnGUI()
        {
            this.platformType     = (PlatformType)EditorGUILayout.EnumPopup(platformType);
            this.clearFolder      = EditorGUILayout.Toggle("clean folder? ", clearFolder);
            this.isBuildExe       = EditorGUILayout.Toggle("build exe?", this.isBuildExe);
            this.isContainAB      = EditorGUILayout.Toggle("contain assetsbundle?", this.isContainAB);
            this.codeOptimization = (CodeOptimization)EditorGUILayout.EnumPopup("CodeOptimization ", this.codeOptimization);
            EditorGUILayout.LabelField("BuildAssetBundleOptions ");
            this.buildAssetBundleOptions = (BuildAssetBundleOptions)EditorGUILayout.EnumFlagsField(this.buildAssetBundleOptions);

            switch (this.codeOptimization)
            {
            case CodeOptimization.None:
            case CodeOptimization.Debug:
                this.buildOptions = BuildOptions.Development | BuildOptions.ConnectWithProfiler;
                break;

            case CodeOptimization.Release:
                this.buildOptions = BuildOptions.None;
                break;
            }

            GUILayout.Space(5);

            if (GUILayout.Button("BuildPackage"))
            {
                if (this.platformType == PlatformType.None)
                {
                    ShowNotification(new GUIContent("please select platform!"));
                    return;
                }
                if (platformType != activePlatform)
                {
                    switch (EditorUtility.DisplayDialogComplex("Warning!", $"current platform is {activePlatform}, if change to {platformType}, may be take a long time", "change", "cancel", "no change"))
                    {
                    case 0:
                        activePlatform = platformType;
                        break;

                    case 1:
                        return;

                    case 2:
                        platformType = activePlatform;
                        break;
                    }
                }
                BuildHelper.Build(this.platformType, this.buildAssetBundleOptions, this.buildOptions, this.isBuildExe, this.isContainAB, this.clearFolder);
            }

            GUILayout.Label("");
            GUILayout.Label("Code Compile:");

            this.globalConfig.LoadMode = (LoadMode)EditorGUILayout.EnumPopup("LoadMode: ", this.globalConfig.LoadMode);

            this.globalConfig.CodeMode = (CodeMode)EditorGUILayout.EnumPopup("CodeMode: ", this.globalConfig.CodeMode);

            if (GUILayout.Button("BuildCode"))
            {
                if (Define.EnableCodes)
                {
                    throw new Exception("now in ENABLE_CODES mode, do not need Build!");
                }
                BuildAssemblieEditor.BuildCode(this.codeOptimization, globalConfig);
            }

            if (GUILayout.Button("BuildModel"))
            {
                if (Define.EnableCodes)
                {
                    throw new Exception("now in ENABLE_CODES mode, do not need Build!");
                }
                BuildAssemblieEditor.BuildModel(this.codeOptimization, globalConfig);
            }

            if (GUILayout.Button("BuildHotfix"))
            {
                if (Define.EnableCodes)
                {
                    throw new Exception("now in ENABLE_CODES mode, do not need Build!");
                }
                BuildAssemblieEditor.BuildHotfix(this.codeOptimization, globalConfig);
            }

            if (GUILayout.Button("ExcelExporter"))
            {
                //Directory.Delete("Assets/Bundles/Config", true);
                ToolsEditor.ExcelExporter();
                // 如果是ClientServer,那么客户端要使用服务端配置
                if (this.globalConfig.CodeMode == CodeMode.ClientServer)
                {
                    FileHelper.CopyDirectory("../Config/StartConfig/Localhost", "Assets/Bundles/Config/StartConfig/Localhost");
                    foreach (string file in Directory.GetFiles("../Config/", "*.bytes"))
                    {
                        File.Copy(file, $"Assets/Bundles/Config/{Path.GetFileName(file)}", true);
                    }
                }
                Debug.Log("copy config to Assets/Bundles/Config");
            }

            if (GUILayout.Button("Proto2CS"))
            {
                ToolsEditor.Proto2CS();
            }



            GUILayout.Space(5);
        }