AssetBundle打包學習(三)

weixin_33860722發表於2017-01-01

本期主要整理一些在AssetBundle打包中碰到的一些細節上的問題。
可以發現AssetBundle和一些Unity提供的配置選項不相容導致碰到一些奇怪的問題。

Mesh配置

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

3503018-d979dc4caf2e67cc.png
Mesh Inspector

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

IOS相關

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

Shader相關

shader stripping 預設的Lightmap modes & Fog modes都是Automatic。這樣發現最後打完Asset Bundle發現表現上烘焙的光照表現不正確,霧效也丟失了。需要配置為Manual然後根據實際情況勾選相應的Shader,比如Baked Non-Directional。

載入相關

當發起一個AssetBundle的LoadAsync非同步請求的時候,呼叫Resources.UnloadUnusedAssets會導致這個AssetBundle載入的資源被釋放掉,5.3.6版本存在 5.3.7已經修復 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)

總結

AssetBundle的使用需要主要注意很多細節,總體來看和優化有關,這樣類似的問題定位上會簡單很多。

相關文章