Version: 1.7
语言 : 中文
构建 Instant Asset
输入

优化资源工作流程

团结引擎对原有资源流程进行了一些特殊优化,新的特性如下所示。

AssetBundle 加密

AssetBundle是团结引擎提供的资源打包与加载方案,本质上是一个二进制文件,缺乏天然的安全保护。为帮助开发者更好地保护游戏资源,团结引擎提供了加密方案。

使用方式

  • AssetBundle加密需使用 LZ4 压缩格式。
  • 构建AssetBundle前,先指定本次构建所用的加密密钥。
  • 构建时,指定BuildAssetBundleOptions包含ChunkBasedCompressionEnableProtection
// 构建
BuildPipeline.SetAssetBundleEncryptKey("0123456789abcdef");

// 指定 BuildAssetBundleOptions 包含:ChunkBasedCompression 和 EnableProtection
BuildPipeline.BuildAssetBundles (outputPath, BuildAssetBundleOptions.ChunkBasedCompression | BuildAssetBundleOptions.EnableProtection, EditorUserBuildSettings.activeBuildTarget);

加载阶段

// 通过指定密钥为null来清除密钥
BuildPipeline.SetAssetBundleEncryptKey(null);

// 加载 AssetBundle 时,先指定本次加载所使用的解密密钥
AssetBundle.SetAssetBundleDecryptKey("0123456789abcdef");
AssetBundle assetBundle = AssetBundle.LoadFromFile("To/bundle");

// 通过指定密钥为null来清除密钥
AssetBundle.SetAssetBundleDecryptKey(null);

AssetBundle 依赖分析优化

随着项目规模扩大,AssetBundle构建耗时显著增加。其主要原因在于依赖分析需读取每个 Library/Artifacts 中资产文件的头信息,产生大量的IO。导致开发者调用构建接口后,需要很长一段时间才能实际进入打包环节。

团结引擎优化了上述流程,将依赖分析信息存储在 Library/SourceAssetDB 中。引擎基于 LMDB 数据库,查询效率远高于传统的文件级别依赖分析。需要注意的是,开启该功能会使 SourceAssetDB 文件体积略有增加。

使用方式

勾选 Project Settings -> Editor -> Asset Pipeline -> Enable Storage Artifact Reference in DB 选项即可启用,无需重新导入 Library。首次开启可能会有一定耗时,之后 AssetBundle 构建将自动应用优化。

AssetBundle 构建并行优化

AssetBundle全量构建通常耗时较长,严重影响开发迭代效率。团结引擎 1.6.0 版本在AssetBundle依赖分析优化的基础上,对部分构建流程并行化处理。

在团结引擎 1.6.0 版本中,新增了通过 JobSystem 多线程优化构建 archive 压缩包的步骤,大幅提升AssetBundle构建速度。未来版本还将陆续推出资产免构建方案和基于 AssetBundle 的多进程并行构建方案,持续优化资产构建流程。

使用方式

在构建阶段指定 BuildAssetBundleOptions 包含 MultithreadBuildArchive

// 指定 BuildAssetBundleOptions 包含:MultithreadBuildArchive
BuildPipeline.BuildAssetBundles (outputPath, BuildAssetBundleOptions.MultithreadBuildArchive, EditorUserBuildSettings.activeBuildTarget);
构建 Instant Asset
输入