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(); } }
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(); }
public static void BuildData() { BuildAssemblieEditor.BuildMuteAssembly("Data", new [] { "Codes/Model/", "Codes/ModelView/", }, Array.Empty <string>(), CodeOptimization.Debug); }
public static void BuildDll() { BuildAssemblieEditor.BuildMuteAssembly("Code", new [] { "Codes/Model/", "Codes/ModelView/", "Codes/Hotfix/", "Codes/HotfixView/" }); AssetDatabase.Refresh(); }
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); }
public static void BuildCodeRelease() { BuildAssemblieEditor.BuildMuteAssembly("Code", new [] { "Codes/Model/", "Codes/ModelView/", "Codes/Hotfix/", "Codes/HotfixView/" }, Array.Empty <string>(), CodeOptimization.Release); AfterCompiling(); AssetDatabase.Refresh(); }
/// <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(); } }
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); }
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); }
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); }
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资源打包"); }
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); }