如题,问题是在编辑器和打包在真机测试上的效果不一致。
首先,第一次遇到的问题是编辑器和真机上大量资源不符和丢失,多次对比表现为,异常和丢失内容都是两个版本之间变更的资源,判定为资源引用异常,尝试删除缓存资源,然后本机恢复正常,然后其他有缓存的机器在运行时依然出现问题。
即优先加载了缓存资源而不是最新资源。
由此查出原因是因为版本号异常导致,资源对比时,缓存的资源优先级更高。然后只需要把当前的版本号变更至比缓存资源的版本号更高即可。
第二次遇到的是资源生效了,但其中部分资源存在异常。首先常规一套尝试都做了,发现一些异常的问题
csharp
The referenced script ("XXXXX") on this Behaviour is missing!
即报了空引用的错误,理论上大部分脚本丢失都是找不到对应对象的。
csharp
The referenced script (Unknown) on this Behaviour is missing!
所以这个尤为奇怪。遂使用仿真模式,即通过模拟真机的加载方式去加载ab包里的资源。
这次发现的更奇怪的问题,即缺失的对象居然有Unity自身的组件,即Text组件或者Image组件。
此时懵逼了,完全无法得知为何出现这种情况。但可以判断的是Unity打Ab包时资源在其过程中发生问题,具体打包逻辑就没去追根,但已经可以定位到是某个具体的资源异常了。
然后检查该资源并调整即可。