BuildHelper.cs 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. using System.IO;
  2. using System.Linq;
  3. using UnityEditor;
  4. using UnityEditor.Build.Reporting;
  5. using UnityEngine;
  6. namespace ET
  7. {
  8. public static class BuildHelper
  9. {
  10. private const string relativeDirPrefix = "./Release";
  11. public static string BuildFolder = "./Release/{0}/StreamingAssets/";
  12. #if ENABLE_VIEW
  13. [MenuItem("ET/Loader/Remove ENABLE_VIEW", false, ETMenuItemPriority.ChangeDefine)]
  14. public static void RemoveEnableView()
  15. {
  16. DefineHelper.EnableDefineSymbols("ENABLE_VIEW", false);
  17. }
  18. #else
  19. [MenuItem("ET/Loader/Add ENABLE_VIEW", false, ETMenuItemPriority.ChangeDefine)]
  20. public static void AddEnableView()
  21. {
  22. DefineHelper.EnableDefineSymbols("ENABLE_VIEW", true);
  23. }
  24. #endif
  25. public static void Build(PlatformType type, BuildOptions buildOptions)
  26. {
  27. BuildTarget buildTarget = BuildTarget.StandaloneWindows;
  28. string programName = "ET";
  29. string exeName = programName;
  30. switch (type)
  31. {
  32. case PlatformType.Windows:
  33. buildTarget = BuildTarget.StandaloneWindows64;
  34. exeName += ".exe";
  35. break;
  36. case PlatformType.Android:
  37. buildTarget = BuildTarget.Android;
  38. exeName += ".apk";
  39. break;
  40. case PlatformType.IOS:
  41. buildTarget = BuildTarget.iOS;
  42. break;
  43. case PlatformType.MacOS:
  44. buildTarget = BuildTarget.StandaloneOSX;
  45. break;
  46. case PlatformType.Linux:
  47. buildTarget = BuildTarget.StandaloneLinux64;
  48. break;
  49. case PlatformType.WebGL:
  50. buildTarget = BuildTarget.WebGL;
  51. break;
  52. }
  53. AssetDatabase.Refresh();
  54. Debug.Log("start build");
  55. string[] levels = { "Packages/cn.etetet.loader/Scenes/Init.unity" };
  56. BuildReport report = BuildPipeline.BuildPlayer(levels, $"{relativeDirPrefix}/{exeName}", buildTarget, buildOptions);
  57. if (report.summary.result != BuildResult.Succeeded)
  58. {
  59. Debug.Log($"BuildResult:{report.summary.result}");
  60. return;
  61. }
  62. Debug.Log("finish build");
  63. EditorUtility.OpenWithDefaultApp(relativeDirPrefix);
  64. }
  65. }
  66. }