BuildHelper.cs 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  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. public static void Build(PlatformType type, BuildAssetBundleOptions buildAssetBundleOptions, BuildOptions buildOptions, bool isBuildExe, bool isContainAB, bool clearFolder)
  11. {
  12. BuildTarget buildTarget = BuildTarget.StandaloneWindows;
  13. string programName = "ET";
  14. string exeName = programName;
  15. switch (type)
  16. {
  17. case PlatformType.PC:
  18. buildTarget = BuildTarget.StandaloneWindows64;
  19. exeName += ".exe";
  20. break;
  21. case PlatformType.Android:
  22. buildTarget = BuildTarget.Android;
  23. exeName += ".apk";
  24. break;
  25. case PlatformType.IOS:
  26. buildTarget = BuildTarget.iOS;
  27. break;
  28. case PlatformType.MacOS:
  29. buildTarget = BuildTarget.StandaloneOSX;
  30. break;
  31. }
  32. string fold = string.Format(BuildFolder, type);
  33. if (clearFolder && Directory.Exists(fold))
  34. {
  35. Directory.Delete(fold, true);
  36. Directory.CreateDirectory(fold);
  37. }
  38. else
  39. {
  40. Directory.CreateDirectory(fold);
  41. }
  42. UnityEngine.Debug.Log("开始资源打包");
  43. BuildPipeline.BuildAssetBundles(fold, buildAssetBundleOptions, buildTarget);
  44. UnityEngine.Debug.Log("完成资源打包");
  45. if (isContainAB)
  46. {
  47. FileHelper.CleanDirectory("Assets/StreamingAssets/");
  48. FileHelper.CopyDirectory(fold, "Assets/StreamingAssets/");
  49. }
  50. if (isBuildExe)
  51. {
  52. AssetDatabase.Refresh();
  53. string[] levels = {
  54. "Assets/Scenes/Init.unity",
  55. };
  56. UnityEngine.Debug.Log("开始EXE打包");
  57. BuildPipeline.BuildPlayer(levels, $"{relativeDirPrefix}/{exeName}", buildTarget, buildOptions);
  58. UnityEngine.Debug.Log("完成exe打包");
  59. }
  60. else
  61. {
  62. if (isContainAB && type == PlatformType.PC)
  63. {
  64. string targetPath = Path.Combine(relativeDirPrefix, $"{programName}_Data/StreamingAssets/");
  65. FileHelper.CleanDirectory(targetPath);
  66. Debug.Log($"src dir: {fold} target: {targetPath}");
  67. FileHelper.CopyDirectory(fold, targetPath);
  68. }
  69. }
  70. }
  71. }
  72. }