| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- using System.IO;
- using System.Linq;
- using UnityEditor;
- using UnityEditor.Build.Reporting;
- using UnityEngine;
- namespace ET
- {
- public static class BuildHelper
- {
- private const string relativeDirPrefix = "./Release";
- public static string BuildFolder = "./Release/{0}/StreamingAssets/";
- #if ENABLE_VIEW
- [MenuItem("ET/Loader/Remove ENABLE_VIEW", false, ETMenuItemPriority.ChangeDefine)]
- public static void RemoveEnableView()
- {
- EnableDefineSymbols("ENABLE_VIEW", false);
- }
- #else
- [MenuItem("ET/Loader/Add ENABLE_VIEW", false, ETMenuItemPriority.ChangeDefine)]
- public static void AddEnableView()
- {
- EnableDefineSymbols("ENABLE_VIEW", true);
- }
- #endif
- public static void EnableDefineSymbols(string symbols, bool enable)
- {
- Debug.Log($"EnableDefineSymbols {symbols} {enable}");
- string defines = PlayerSettings.GetScriptingDefineSymbolsForGroup(EditorUserBuildSettings.selectedBuildTargetGroup);
- var ss = defines.Split(';').ToList();
- if (enable)
- {
- if (ss.Contains(symbols))
- {
- return;
- }
- ss.Add(symbols);
- }
- else
- {
- if (!ss.Contains(symbols))
- {
- return;
- }
- ss.Remove(symbols);
- }
- Debug.Log($"EnableDefineSymbols {symbols} {enable}");
- defines = string.Join(";", ss);
- PlayerSettings.SetScriptingDefineSymbolsForGroup(EditorUserBuildSettings.selectedBuildTargetGroup, defines);
- AssetDatabase.SaveAssets();
- AssetDatabase.Refresh();
- }
- public static void Build(PlatformType type, BuildOptions buildOptions)
- {
- BuildTarget buildTarget = BuildTarget.StandaloneWindows;
- string programName = "ET";
- string exeName = programName;
- switch (type)
- {
- case PlatformType.Windows:
- buildTarget = BuildTarget.StandaloneWindows64;
- exeName += ".exe";
- break;
- case PlatformType.Android:
- buildTarget = BuildTarget.Android;
- exeName += ".apk";
- break;
- case PlatformType.IOS:
- buildTarget = BuildTarget.iOS;
- break;
- case PlatformType.MacOS:
- buildTarget = BuildTarget.StandaloneOSX;
- break;
- case PlatformType.Linux:
- buildTarget = BuildTarget.StandaloneLinux64;
- break;
- case PlatformType.WebGL:
- buildTarget = BuildTarget.WebGL;
- break;
- }
- AssetDatabase.Refresh();
- Debug.Log("start build");
- string[] levels = { "Packages/cn.etetet.loader/Scenes/Init.unity" };
- BuildReport report = BuildPipeline.BuildPlayer(levels, $"{relativeDirPrefix}/{exeName}", buildTarget, buildOptions);
- if (report.summary.result != BuildResult.Succeeded)
- {
- Debug.Log($"BuildResult:{report.summary.result}");
- return;
- }
- Debug.Log("finish build");
- EditorUtility.OpenWithDefaultApp(relativeDirPrefix);
- }
- }
- }
|