为了通过 AutoStreaming 优化游戏资源,将重资源(如 Texture、Mesh、Animation 等)提取并存储在云端,实现按需下载加载,我们需要精确地搜索和标记游戏中使用的所有资源。这不仅有助于减小游戏的初始包体积,还能加快小游戏的首次启动时间。
目前 AutoStreaming Editor 工具能够自动搜索出以下方式使用到的资源:
Build Settings 中所有 active 的场景,以及场景引用到的资源;
通过 Inspector 中 AssetBundle 标签设置和打包的 AB;
项目的 Resources 文件夹;
Addressable 中引用到的资源。
引擎提供两种方法来指定资源打包到特定的 AssetBundle:
BuildPipeline.BuildAssetBundles(string outputPath, AssetBundleBuild[] builds, ...)
方法在代码中动态指定资源打包。对于第二种情况,目前我们无法自动搜索出这些 AB、以及他们引用了哪些资源。因此需要用户提供一个文本文件CustomSearch.txt
,列出 AB 中使用到的资源。该文件格式如下:
只需列出根资源,依赖的其他资源将由工具自动搜索。
AB 打包复杂的情况下,可以利用引擎提供的工具,从打包好的 AB manifest 文件生成所需的 CustomSearch.txt 文件。
打开 Auto Streaming -> Cfg & Publish 窗口
点击 Search AB 按钮,然后选择 assetbundle 打包文件夹(文件夹下需要有完整的 AB manifest 文件)。稍作等待后,前往 assetbundle 将生成的 CustomSearch.txt 拷贝到 Assets 目录下。
点击 Browse,选择 Assets 目录下的 CustomSearch.txt 文件
后续如果 AB 打包策略发生变化,需要按上述步骤重新生成 CustomSearch.txt
在 Texture Streaming 等页面,每个搜索出的资源旁边都会有一个 References 标签,显示资源被引用的位置。标签的可能值及其含义如下:
0,1,2…:对应 BuildSetting 中的场景 index,0代表该资源被 BuildSetting 中第一个场景引用;
res:资源来源于 Resources 文件夹的搜索;
cus:资源来源于 CustomSearch.txt 中指定的资源列表;
themes/default:AB 名称,对应于资源 Inspector 下方设置的 AB 标签;
aa:Addressables,该资源在 Addressables 中被引用。