解決方法有了,咱們來測試一下尋找一下形成這個錯誤的緣由。
測試記錄: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用事件來綁定。
參考網頁: