項目開發日志: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用事件來綁定。
 
參考網頁
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM