Unity創建Assetbundle與加載

<div class="postbody">
<div id="cnblogs_post_body"><p>【<span style="color: #ff0000;"><strong>Assetbundle創建與加載</strong></span>】</p>

  Unity有兩種動態加載機制:一種是Resource.Load。一種是AssetBundle。Assetbundle是Unity Pro提供的功能,它可以把多個遊戲對象或者資源二進制文件封裝到Assetbundle中。供加載、解壓使用。  

創建Assetbundle

使用方法 BuildPipeline.BuildAssetBundle (Object, assets , pathName , options , targetPlatform) 

參數1:它只能放一個對象。

參數2:可以放入一個數組對象。

參數3:保存路徑。

參數4:BuilderAssetBundleOptions

       CollectDependencies // 包含所有依賴關係。

       CompleteAssets//強制包含整個資源

       DisableWriteTypeTree//在資源包不包含類型信息。

       DeterministicAssetBundle//編譯資源包使用一個哈希表儲存對象ID在資源包中。

       UncompressedAssetBundle//不壓縮Assetbundle,默認會進行壓縮

參數5:平臺

       特別注意的是,電腦上和手機上打出來的Assetbundle不能混用,不同平臺只能用自己的。

載入Assetbundle

       使用方法:

       1)WWW bundle = new WWW(path);

       2)WWW bundle = WWW.LoadFromCacheOrDownload(path, fileVer);

載入成功後就可以通過資源名使用bundle.assetBundle.Load方法獲取資源。

       如下圖所示

  

  使用Assetbundle.Load會從Assetbundle的內存鏡像中讀取並創建一個Asset對象,創建的同時會分配相應的內存用於反序列化存儲。

內存釋放

  

  最後在使用Assetbundle時候最好的方式是。

  創建時:使用Assetbundle.load加載所需的asset,加載完後立即Assetbundle.Unload(false),釋放Assetbundle文件本身的內存鏡像,但不銷燬加載的Asset對象。這樣遍可以釋放一部分內存。

  釋放時。如果是通過Instantiate的對象,用Destroy進行銷燬。在合適的地方使用Resources.UnloadUnusedAssets,釋放已經沒有引用的Asset。Unity底層會對對象引用進行計數,如果引用爲0.執行UnloadUnusedAssets就可以全部釋放。

 【使用要點

1、AssetBundle會使用Lzma壓縮。

2、Resource下的資源發佈時會變成resources.assets文件,2G磁盤大小限制。首次完全下載,不可更新。

3、AssetBundle的本地磁盤緩存可多達4G,除了Web版只能50M。

4、兼容性。

  

5、AssetBundle創建方法:

  

6、BundleOption的區別。

  

7、AssetBundle.CreateFromMemory()速度慢。

8、AssetBundle.CreateFromFile只能加載非壓縮的AssetBundle。

9、LoadLevel方法詳解:

  

10、AssetBundle的釋放。

  

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章