項目開發日誌: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用事件來綁定。
 
參考網頁
相關文章
相關標籤/搜索