/// <summary> /// 获取构建选项 /// </summary> public BuildAssetBundleOptions MakeBuildOptions(AssetBundleBuilder.BuildOptionsContext buildOptions) { // For the new build system, unity always need BuildAssetBundleOptions.CollectDependencies and BuildAssetBundleOptions.DeterministicAssetBundle // 除非设置ForceRebuildAssetBundle标记,否则会进行增量打包 BuildAssetBundleOptions opt = BuildAssetBundleOptions.None; opt |= BuildAssetBundleOptions.StrictMode; //Do not allow the build to succeed if any errors are reporting during it. if (buildOptions.CompressOption == ECompressOption.Uncompressed) { opt |= BuildAssetBundleOptions.UncompressedAssetBundle; } else if (buildOptions.CompressOption == ECompressOption.LZ4) { opt |= BuildAssetBundleOptions.ChunkBasedCompression; } if (buildOptions.IsForceRebuild) { opt |= BuildAssetBundleOptions.ForceRebuildAssetBundle; //Force rebuild the asset bundles } if (buildOptions.IsAppendHash) { opt |= BuildAssetBundleOptions.AppendHashToAssetBundleName; //Append the hash to the assetBundle name } if (buildOptions.IsDisableWriteTypeTree) { opt |= BuildAssetBundleOptions.DisableWriteTypeTree; //Do not include type information within the asset bundle (don't write type tree). } if (buildOptions.IsIgnoreTypeTreeChanges) { opt |= BuildAssetBundleOptions.IgnoreTypeTreeChanges; //Ignore the type tree changes when doing the incremental build check. } return(opt); }
/// <summary> /// 创建Readme文件到输出目录 /// </summary> private void CreateReadmeFile(AssetBundleBuilder.BuildParametersContext buildParameters, AssetBundleBuilder.BuildOptionsContext buildOptions, AssetBundleManifest unityManifest) { string[] allAssetBundles = unityManifest.GetAllAssetBundles(); // 删除旧文件 string filePath = $"{buildParameters.OutputDirectory}/{PatchDefine.ReadmeFileName}"; if (File.Exists(filePath)) { File.Delete(filePath); } BuildLogger.Log($"创建说明文件:{filePath}"); StringBuilder content = new StringBuilder(); AppendData(content, $"构建平台:{buildParameters.BuildTarget}"); AppendData(content, $"构建版本:{buildParameters.BuildVersion}"); AppendData(content, $"构建时间:{DateTime.Now}"); AppendData(content, ""); AppendData(content, $"--着色器--"); AppendData(content, $"IsCollectAllShaders:{AssetBundleCollectorSettingData.Setting.IsCollectAllShaders}"); AppendData(content, $"ShadersBundleName:{AssetBundleCollectorSettingData.Setting.ShadersBundleName}"); AppendData(content, ""); AppendData(content, $"--配置信息--"); for (int i = 0; i < AssetBundleCollectorSettingData.Setting.Collectors.Count; i++) { AssetBundleCollectorSetting.Collector wrapper = AssetBundleCollectorSettingData.Setting.Collectors[i]; AppendData(content, $"Directory : {wrapper.CollectDirectory} | {wrapper.PackRuleClassName} | {wrapper.FilterRuleClassName}"); } AppendData(content, ""); AppendData(content, $"--构建参数--"); AppendData(content, $"CompressOption:{buildOptions.CompressOption}"); AppendData(content, $"IsForceRebuild:{buildOptions.IsForceRebuild}"); AppendData(content, $"IsDisableWriteTypeTree:{buildOptions.IsDisableWriteTypeTree}"); AppendData(content, $"IsIgnoreTypeTreeChanges:{buildOptions.IsIgnoreTypeTreeChanges}"); AppendData(content, ""); AppendData(content, $"--构建清单--"); for (int i = 0; i < allAssetBundles.Length; i++) { AppendData(content, allAssetBundles[i]); } PatchManifest patchFile = AssetBundleBuilder.LoadPatchManifestFile(buildParameters); { AppendData(content, ""); AppendData(content, $"--更新清单--"); foreach (var patchBundle in patchFile.BundleList) { if (patchBundle.Version == buildParameters.BuildVersion) { AppendData(content, patchBundle.BundleName); } } AppendData(content, ""); AppendData(content, $"--变体列表--"); foreach (var variant in patchFile.VariantList) { AppendData(content, variant.ToString()); } } // 创建新文件 File.WriteAllText(filePath, content.ToString(), Encoding.UTF8); }