BuildHelper.cs 3.0 KB

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