Unity AssetBundle 打包缓存 Bug
文章目录
问题
有一个资源 Abc_Bcd_Cde.png
被改名为 abc_bcd_cde.png
。在编辑器中可以正常加载,但是手机上无法加载。
环境
- Unity 2017.4.2f2
- macOS 10.13.6
查找过程
Git
由于项目使用 Git 作为版本控制软件,首先要确定资源在仓库中是否被正确改名了,经检查后发现正确。
另外要检查打包机的 Git 仓库中的文件名是否被正确改名了,经检查后发现正确。
Unity
确认资源在编辑器下可以正常加载,编辑器已经加入对文件名大小写不同的检测了,经检查发现没有问题。
AssetBundle
项目使用 Unity 默认的 AssetBundle 打包 API,默认就会开启增量打包功能,是通过保存一个 manifest 文件实现的。
打开资源所在 AssetBundle 对应的 manifest 文件,发现其中保存的是 Abc_Bcd_Cde.png
。
使用 Unity 自带的 WebExtract 与 binary2text 工具解压查看对应的 AssetBundle,可以看到资源名字错误,还是 Abc_Bcd_Cde.png
。
结论
Unity 并没有认为资源文件名大小写变化算是变化,因此没有重新打包对应的 AssetBundle。
解决方案
打包时可以清除 AssetBundle 缓存,然后再次打包。
其实在项目中有各种各样的缓存,在打包时应该可以指定清除所有缓存功能,防止出现奇怪的问题。
文章作者 狂飙
初次发布 2018-10-14 23:20:47 +0800
永久链接 https://networm.me/2018/10/14/unity-build-assetbundle-cache-bug/