使用Addressables+SpriteAtlas打包產生冗餘

UWATech發表於2024-09-18

1)使用Addressables+SpriteAtlas打包產生冗餘
2)使用SBP打AssetBundle指令碼引用丟失
3)Unity構建後處理(IPostprocessBuildWithReport等介面)丟擲異常後,構建不會停止
4)Unity 2022.3.0版本使用Occlusion,PC執行良好但是安卓手機無效


這是第400篇UWA技術知識分享的推送,精選了UWA社群的熱門話題,涵蓋了UWA問答、社群帖子等技術知識點,助力大家更全面地掌握和學習。

UWA社群主頁:community.uwa4d.com
UWA QQ群:793972859

AssetBundle

Q:問題描述:
1. 將SpriteAtlas單獨打成一個Group,結果其他AssetBundle冗餘了png。
2.將SpriteAtlas + 這個SpriteAtlas的png放到一個Group中,其他AssetBundle不冗餘png了,但是這個Group資源Double了。

注:專案中直接使用的是png的Sprite,而不是在SpriteAtlas中Get Sprite。

A:其實是Unity的Bug,準確地說是SBP的Bug。

使用Addressables+SpriteAtlas打包產生冗餘

未更新到最新的可以參考以下文章,或者直接更新到最新。
https://zhuanlan.zhihu.com/p/586918159

感謝題主夏霖銳@UWA問答社群提供了回答


AssetBundle

Q:最近專案實驗升級ScriptableBuildPipeline打包AssetBundle(之前使用的是BuildIn構建管線)。使用的Unity為2022.3,SBP版本為2.1.4。

結果發現打出的UI AssetBundle中,部分NGUI的指令碼丟失引用了,丟的最多的是UIButton。但也不是所有UI都會丟失,有的就正常。BuildIn管線打包也正常。

真機上載入資源的時候會報錯:
Error: A scripted object (script unknown or not yet loaded) has a different serialization layout when loading. (Read 32 bytes but expected 8136 bytes)

Did you #ifdef UNITY_EDITOR a section of your serialized properties in any of your scripts?

UnityEngine.AssetBundle:LoadAsset(String)

使用AssetStudio解包AssetBundle,發現指令碼的m_PathId為0。求助,這可能是哪的問題?

使用Addressables+SpriteAtlas打包產生冗餘

使用Addressables+SpriteAtlas打包產生冗餘

針對以上問題,有經驗的朋友歡迎轉至社群交流:
https://answer.uwa4d.com/question/66babdd6682c7e5cd61bf8ae


Editor

Q:Unity構建後處理(IPostprocessBuildWithReport等介面)丟擲異常後,構建不會停止。

有什麼比較好的方法,能在後處理過程中發生異常時,立即讓構建停止並失敗。無需關心Build Report中的結果,只是希望能讓整體構建對外丟擲異常。

A:執行一下“AssetDatabase.Refresh();”就停止打包了。

感謝夏霖銳@UWA問答社群提供了回答


AssetBundle

Q:Unity 2022.3.0版本使用Occlusion,場景是打成AssetBundle來載入的,PC上也是一樣載入安卓平臺的AssetBundle來載入場景,OC資料是跟著第一個啟用的場景載入的,在PC上執行良好,但是上了手機就一點效果沒有,管線是URP。請問這是什麼情況呢?

針對以上問題,有經驗的朋友歡迎轉至社群交流:
https://answer.uwa4d.com/question/66bca1f6682c7e5cd61bf8b5

封面圖來源於網路


今天的分享就到這裡。生有涯而知無涯,在漫漫的開發週期中,我們遇到的問題只是冰山一角,UWA社群願伴你同行,一起探索分享。歡迎更多的開發者加入UWA社群。

UWA官網:www.uwa4d.com
UWA社群:community.uwa4d.com
UWA學堂:edu.uwa4d.com
官方技術QQ群:793972859

相關文章