Esempio n. 1
0
        /// <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);
        }
Esempio n. 2
0
        /// <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);
        }