BuildHelper.cs 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. using System.IO;
  2. using UnityEditor;
  3. namespace ET
  4. {
  5. public static class BuildHelper
  6. {
  7. private const string relativeDirPrefix = "../Release";
  8. public static string BuildFolder = "../Release/{0}/StreamingAssets/";
  9. [MenuItem("Tools/web资源服务器")]
  10. public static void OpenFileServer()
  11. {
  12. ProcessHelper.Run("dotnet", "FileServer.dll", "../FileServer/");
  13. }
  14. public static void Build(PlatformType type, BuildAssetBundleOptions buildAssetBundleOptions, BuildOptions buildOptions, bool isBuildExe, bool isContainAB, bool clearFolder)
  15. {
  16. BuildTarget buildTarget = BuildTarget.StandaloneWindows;
  17. string exeName = "ET";
  18. switch (type)
  19. {
  20. case PlatformType.PC:
  21. buildTarget = BuildTarget.StandaloneWindows64;
  22. exeName += ".exe";
  23. break;
  24. case PlatformType.Android:
  25. buildTarget = BuildTarget.Android;
  26. exeName += ".apk";
  27. break;
  28. case PlatformType.IOS:
  29. buildTarget = BuildTarget.iOS;
  30. break;
  31. case PlatformType.MacOS:
  32. buildTarget = BuildTarget.StandaloneOSX;
  33. break;
  34. }
  35. string fold = string.Format(BuildFolder, type);
  36. if (clearFolder && Directory.Exists(fold))
  37. {
  38. Directory.Delete(fold, true);
  39. Directory.CreateDirectory(fold);
  40. }
  41. else
  42. {
  43. Directory.CreateDirectory(fold);
  44. }
  45. Log.Info("开始资源打包");
  46. BuildPipeline.BuildAssetBundles(fold, buildAssetBundleOptions, buildTarget);
  47. Log.Info("完成资源打包");
  48. if (isContainAB)
  49. {
  50. FileHelper.CleanDirectory("Assets/StreamingAssets/");
  51. FileHelper.CopyDirectory(fold, "Assets/StreamingAssets/");
  52. }
  53. if (isBuildExe)
  54. {
  55. AssetDatabase.Refresh();
  56. string[] levels = {
  57. "Assets/Scenes/Init.unity",
  58. };
  59. Log.Info("开始EXE打包");
  60. BuildPipeline.BuildPlayer(levels, $"{relativeDirPrefix}/{exeName}", buildTarget, buildOptions);
  61. Log.Info("完成exe打包");
  62. }
  63. }
  64. }
  65. }