项目开发日志:Build AssetBundle——SpriteAtlas(已解惑)

项目信息:
   平台-Android
   Unity编辑器版本-2018.2.5f1
 
情况1:真机情况下引用到图集下的sprite的UI显示出错。(图集被打成AB包且勾选了Include in Build).
 
在咱们的测试下发现了如下两个解决方案:(固然我以为第二个最好)
    1.在加载相应UI前,将sprite所属图集(spriteAtlas)提早加载到内存中。(至关麻烦,你得知道本身的sprite属于哪一个图集,而且须要相应的一套资源加载的框架)。
     2.调用unity提供的回调atlasRequested,手动绑定图集。(untiy2018之后才提供用协程异步加载图集)
解决方法有了,咱们来测试一下寻找一下形成这个错误的缘由。
 
测试记录:unity2017.3.0f3 (注意: 图集要删了从新弄打包,否则改变include in build再次打AB包,AB包跟着上次的来不变)
SpriteAtlas打AB包,并在场景中加载带sprite引用的UI预制体:
    A组:(UnityEditor,不注册事件)
    1.勾选Include in Build , 正常显示
    2.不勾选Include in Build,不显示,并警告SpriteAtlasManager.atlasRequested wasn't listened to while RGB requested.
 
    B组:(UnityEditor,注册事件)
    1.勾选Include in Build,,正常显示,但不触发atlasRequested事件。
    2.不勾选Include in Build,正常显示,并触发atlasRequested事件。
 
    C组:(Android真机,不注册事件)
    1.勾选Include in Build,不显示,并警告SpriteAtlasManager.atlasRequested wasn't listened to while RGB requested.(我反复确认了3次,应该是uinty这个版本本身的BUG了)
    2.不勾选Include in Build,不显示,并警告SpriteAtlasManager.atlasRequested wasn't listened to while RGB requested.
 
    D组:(Android真机,注册事件)
    1.勾选Include in Build,正常显示图片,仍然加载atlasRequested事件。(反复确认了两次……)
    2.不勾选Include in Build,正常显示图片,触发atlasRequested事件。
 
 
总结:
此次测试结果来看,在编辑器下的事件结果(也就是A组和B组)是彻底符合Unity官方文档的。
C组1号 和 D组1号是和官方文档的结论好像不太同样。
 
C组1号勾选了Include in Build竟然仍是不能正常显示,不过和咱们项目开发中遇到的问题是同样的。
D组1号也是出乎我意料的,勾选了Include in Build注册事件,按理说是正常触发且不触发事件的,不过在C组1号的基础上却是合理,找不到spriteAtlas,因而乎根据事件找到spriteAtlas.
 
因此C组1号和D组1号实际上是一个BUG,那就是android真机上atlas打AB包就算勾了Include in Build也不会找到相关的spriteAtlas(不打AB包还没试过)。
 
结论:
因此在Android真机打spriteAtlas上我仍是建议:不勾选Include in Build用事件来绑定。
 
参考网页
相关文章
相关标签/搜索