1.在加载相应UI前,将sprite所属图集(spriteAtlas)提前加载到内存中。(相当麻烦,你得知道自己的sprite属于哪个图集,并且需要相应的一套资源加载的框架)。
接下来是我疑惑的原因:
测试记录:unity2017.3.0f3
SpriteAtlas打AB包:
UnityEditor,勾选Include in Build,不注册atlasRequested,加载带Image的UI预制体,正常显示
UnityEditor,不勾选Include in Build,不注册atlasRequested,加载带Image的UI预制体,不显示显示,并警告SpriteAtlasManager.atlasRequested wasn‘t listened to while RGB requested.
UnityEditor,勾选Include in Build,注册atlasRequested,加载带Image的UI预制体,正常显示,
但不触发atlasRequested事件。
UnityEditor,不勾选Include in Build,注册atlasRequested,加载带Image的UI预制体,正常显示,并触发atlasRequested事件。
Android真机,勾选Include in Build,不注册atlasRequested,加载带Image的UI预制体,正常显示
Android真机,不勾选Include in Build,不注册atlasRequested,加载带Image的UI预制体,正常显示显示图片(奇怪)
Android真机,勾选Include in Build,注册atlasRequested,不加载带Image的UI预制体,正常显示图片,不触发atlasRequested事件。
Android真机,不勾选Include in Build,注册atlasRequested,不加载带Image的UI预制体,正常显示图片,但也不触发atlasRequested事件(奇怪)
我们项目Unity2018在大量UI(勾了Include in Build)的时候有时候会出现显示错误,注册事件后恢复正常。所以这里当作一个unity的BUG?