【Assetbundle創(chuàng)建與加載】
Unity有兩種動(dòng)態(tài)加載機(jī)制:一種是Resource.Load。一種是AssetBundle。Assetbundle是Unity Pro提供的功能,它可以把多個(gè)游戲?qū)ο蠡蛘哔Y源二進(jìn)制文件封裝到Assetbundle中。供加載、解壓使用。
【創(chuàng)建Assetbundle】
使用方法?BuildPipeline.BuildAssetBundle (Object, assets , pathName , options , targetPlatform)
參數(shù)1:它只能放一個(gè)對(duì)象。
參數(shù)2:可以放入一個(gè)數(shù)組對(duì)象。
參數(shù)3:保存路徑。
參數(shù)4:BuilderAssetBundleOptions
CollectDependencies //?包含所有依賴關(guān)系。
CompleteAssets//強(qiáng)制包含整個(gè)資源
DisableWriteTypeTree//在資源包不包含類型信息。
DeterministicAssetBundle//編譯資源包使用一個(gè)哈希表儲(chǔ)存對(duì)象ID在資源包中。
UncompressedAssetBundle//不壓縮Assetbundle,默認(rèn)會(huì)進(jìn)行壓縮
參數(shù)5:平臺(tái)
特別注意的是,電腦上和手機(jī)上打出來(lái)的Assetbundle不能混用,不同平臺(tái)只能用自己的。
【載入Assetbundle】
使用方法:
1)WWW bundle = new WWW(path);
2)WWW bundle = WWW.LoadFromCacheOrDownload(path, fileVer);
載入成功后就可以通過(guò)資源名使用bundle.assetBundle.Load方法獲取資源。
如下圖所示

使用Assetbundle.Load會(huì)從Assetbundle的內(nèi)存鏡像中讀取并創(chuàng)建一個(gè)Asset對(duì)象,創(chuàng)建的同時(shí)會(huì)分配相應(yīng)的內(nèi)存用于反序列化存儲(chǔ)。
【內(nèi)存釋放】

最后在使用Assetbundle時(shí)候最好的方式是。
創(chuàng)建時(shí):使用Assetbundle.load加載所需的asset,加載完后立即Assetbundle.Unload(false),釋放Assetbundle文件本身的內(nèi)存鏡像,但不銷毀加載的Asset對(duì)象。這樣遍可以釋放一部分內(nèi)存。
釋放時(shí)。如果是通過(guò)Instantiate的對(duì)象,用Destroy進(jìn)行銷毀。在合適的地方使用
Resources.UnloadUnusedAssets,釋放已經(jīng)沒(méi)有引用的Asset。Unity底層會(huì)對(duì)對(duì)象引用進(jìn)行計(jì)數(shù),如果引用為0.執(zhí)行
UnloadUnusedAssets就可以全部釋放。
【使用要點(diǎn)】
1、AssetBundle會(huì)使用Lzma壓縮。
2、Resource下的資源發(fā)布時(shí)會(huì)變成resources.assets文件,2G磁盤(pán)大小限制。首次完全下載,不可更新。
3、AssetBundle的本地磁盤(pán)緩存可多達(dá)4G,除了Web版只能50M。
4、兼容性。

5、AssetBundle創(chuàng)建方法:

6、BundleOption的區(qū)別。

7、AssetBundle.CreateFromMemory()速度慢。
8、AssetBundle.CreateFromFile只能加載非壓縮的AssetBundle。
9、LoadLevel方法詳解:

10、AssetBundle的釋放。
