| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- using System.IO;
- using UnityEditor;
- namespace ET
- {
- public static class BuildHelper
- {
- private const string relativeDirPrefix = "../Release";
- public static string BuildFolder = "../Release/{0}/StreamingAssets/";
- [MenuItem("Tools/web资源服务器")]
- public static void OpenFileServer()
- {
- ProcessHelper.Run("dotnet", "FileServer.dll", "../FileServer/");
- }
- public static void Build(PlatformType type, BuildAssetBundleOptions buildAssetBundleOptions, BuildOptions buildOptions, bool isBuildExe, bool isContainAB, bool clearFolder)
- {
- BuildTarget buildTarget = BuildTarget.StandaloneWindows;
- string exeName = "ET";
- switch (type)
- {
- case PlatformType.PC:
- 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;
- }
- string fold = string.Format(BuildFolder, type);
- if (clearFolder && Directory.Exists(fold))
- {
- Directory.Delete(fold, true);
- Directory.CreateDirectory(fold);
- }
- else
- {
- Directory.CreateDirectory(fold);
- }
- Log.Info("开始资源打包");
- BuildPipeline.BuildAssetBundles(fold, buildAssetBundleOptions, buildTarget);
- GenerateVersionInfo(fold);
- Log.Info("完成资源打包");
- if (isContainAB)
- {
- FileHelper.CleanDirectory("Assets/StreamingAssets/");
- FileHelper.CopyDirectory(fold, "Assets/StreamingAssets/");
- }
- if (isBuildExe)
- {
- AssetDatabase.Refresh();
- string[] levels = {
- "Assets/Scenes/Init.unity",
- };
- Log.Info("开始EXE打包");
- BuildPipeline.BuildPlayer(levels, $"{relativeDirPrefix}/{exeName}", buildTarget, buildOptions);
- Log.Info("完成exe打包");
- }
- }
- private static void GenerateVersionInfo(string dir)
- {
- VersionConfig versionProto = new VersionConfig();
- GenerateVersionProto(dir, versionProto, "");
- using (FileStream fileStream = new FileStream($"{dir}/Version.txt", FileMode.Create))
- {
- byte[] bytes = JsonHelper.ToJson(versionProto).ToByteArray();
- fileStream.Write(bytes, 0, bytes.Length);
- }
- }
- private static void GenerateVersionProto(string dir, VersionConfig versionProto, string relativePath)
- {
- foreach (string file in Directory.GetFiles(dir))
- {
- string md5 = MD5Helper.FileMD5(file);
- FileInfo fi = new FileInfo(file);
- long size = fi.Length;
- string filePath = relativePath == "" ? fi.Name : $"{relativePath}/{fi.Name}";
- versionProto.FileInfoDict.Add(filePath, new FileVersionInfo
- {
- File = filePath,
- MD5 = md5,
- Size = size,
- });
- }
- foreach (string directory in Directory.GetDirectories(dir))
- {
- DirectoryInfo dinfo = new DirectoryInfo(directory);
- string rel = relativePath == "" ? dinfo.Name : $"{relativePath}/{dinfo.Name}";
- GenerateVersionProto($"{dir}/{dinfo.Name}", versionProto, rel);
- }
- }
- }
- }
|