资源搜索和引用标签
我们希望通过AutoStreaming把游戏中的重度资源(Texture、Mesh、Animation等)抽取出来,放到云上按需下载加载。 这对于减小首包、小游戏首次启动时间都很有帮助。为了允许自定义的配置单个资源是否使用Streaming, 因此需要搜索出游戏使用到的所有资源。
资源搜索
目前AutoStreaming Editor工具能够自动搜索出以下方式使用到的资源:
- Build Setttings中所有active的场景,以及场景引用到的资源
- 通过inspector中AssetBundle标签设置和打包的AB
- 项目的Resources文件夹
- Addressable中引用到的资源
Unity支持两种方式指定哪些资源会被打包到哪个AB中:
- 在UnityEditor的Inspector中设置资源的AssetBundle名称
- 通过BuildPipeline.BuildAssetBundles(string outputPath, AssetBundleBuild[] builds, ...)在代码中动态指定
对于第二种情况,目前我们无法自动搜索出这些AB、以及他们引用了哪些资源。因此需要用户提供一个文本文件CustomSearch.txt,列出AB中使用到的资源。 这个文件首行为资源总数,之后每行为一个资源路径。这个文件中只需要提供root资源即可,root资源依赖的其它资源可以被工具自动搜索到。
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中被引用