AssetBundle打包學(xué)習(xí)(三)

本期主要整理一些在AssetBundle打包中碰到的一些細節(jié)上的問題。
可以發(fā)現(xiàn)AssetBundle和一些Unity提供的配置選項不兼容導(dǎo)致碰到一些奇怪的問題。

Mesh配置

在FBX的Inspector界面有很多可配置項

Mesh Inspector

發(fā)現(xiàn) Read/Write Enabled的勾取消掉的時候,如果發(fā)生Mesh的訪問操作,會直接導(dǎo)致Crash。一般特效帶Mesh的會發(fā)生這種情況。
Optimize Mesh會導(dǎo)致多余的Mesh被干掉,造成表現(xiàn)出錯。
上面提到的這兩點,如果資源是在Resources目錄下被打包則不會出錯。

IOS相關(guān)

Managed code stripping & Engine code stripping,Engine code stripping 默認開啟,當把所有的資源都打成Asset Bundle以后Unity會認為這是一個空包,然后大部分Class都被strip,當加載AssetBundle訪問的時候直接Crash。

Shader相關(guān)

shader stripping 默認的Lightmap modes & Fog modes都是Automatic。這樣發(fā)現(xiàn)最后打完Asset Bundle發(fā)現(xiàn)表現(xiàn)上烘焙的光照表現(xiàn)不正確,霧效也丟失了。需要配置為Manual然后根據(jù)實際情況勾選相應(yīng)的Shader,比如Baked Non-Directional。

加載相關(guān)

當發(fā)起一個AssetBundle的LoadAsync異步請求的時候,調(diào)用Resources.UnloadUnusedAssets會導(dǎo)致這個AssetBundle加載的資源被釋放掉,5.3.6版本存在 5.3.7已經(jīng)修復(fù) 5.3.7 What's News里面有提到
AssetBundles: Fixed an issue where calling Resources.UnloadUnusedAssets while loading an AssetBundle with AssetBundleRequest.LoadAssetAsync caused an error &and stopped the asset from being loaded properly (803481, 807275)

總結(jié)

AssetBundle的使用需要主要注意很多細節(jié),總體來看和優(yōu)化有關(guān),這樣類似的問題定位上會簡單很多。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容