Unity打包以及載入AssetBundle思路

2021-09-29 06:16:49 字數 1892 閱讀 2895

1.通常把專案中用到的所有shader打到乙個ab包裡,在資源呼叫時首先載入所有shader,因為專案中很多資源引用了shader;

2.把一些共同引用的資源打到同乙個包裡,比如uia用了materialc,uib也用了materialc,uia,uib還用到了texc,那麼我們把materialc,texc打到同乙個包裡,我們使用uia或uib時首先載入他們的引用包(也就是materialc和texc所在的ab包)

3.然後所有lua指令碼類的打到同乙個包裡面

4.所有的字型可以打成同乙個包,所有的例子特效單獨乙個包;

載入assetbundlemanifest

一些重要資訊都在assetbundlemanifest,比如資源依賴,路徑等資訊,所以載入assetbundle前,先要記載讀取assetbundlemanifest的資訊,讀取完之後就沒用了,我們把它解除安裝掉,節省記憶體空間

assetbundle abmanifestbundle = assetbundle.

loadfromfile

(getfullloadabpath

("assetbundles"))

; abmanifest = abmanifestbundle.

loadasset

<

assetbundlemanifest

>

("assetbundlemanifest");

abmanifestbundle.

unload

(false

);

載入相關assetbundle

我們從目標assetbundle包裡載入asset進行例項化的時候,首先檢查這個ab資源包的引用,先載入引用

比如uia用了materialc,uib也用了materialc,uia,uib還用到了texc,那麼我們把materialc,texc打到同乙個包裡,我們使用uia或uib時首先載入他們的引用包(也就是materialc和texc所在的ab包)

,當所有的相關應用載入完畢,再載入目標assetbundle,最後loadasset我們所需要的打包在該ab包裡面的內容。

但是這樣存在乙個問題,就是乙個ab包裡可能有很多資源,我們載入這些資源的時候,可能會出現重複載入同乙個assetbundle包的情況,這很費時間,所以我們要把載入過的assetbundle存在記憶體中,每次載入ab包時判斷該ab包是否已經載入過了,如果載入過了,那麼它是被我們儲存在記憶體中了,我們直接在記憶體中讀取,這樣會快很多。

public

assetbundle

loadassetbundle

(string respath,

bool unloadbundle =

false

)else

if(depab ==

null)}

}if(depallloaded)

else

}else}}

if(cachemap.

containskey

(abpath))}

return cachemap[abpath]

.assetbundle;

}else

}

載入資源

為了加快載入資源的速度,我們同樣也將已經載入過的資源儲存在記憶體中,載入之間判斷記憶體中是否存在,存在則直接讀取記憶體中的資源,不存在則載入資源然後將其儲存在記憶體中,供下次讀取。

我們每次載入資源時,都先要載入其所在的assetbundle包,並且要記下載入資源ab包被引用的次數,這樣方便我們在解除安裝assetbundle時,檢測當前這個要解除安裝的assetbundle包還有沒有資源引用它,如果沒有資源引用,我們才啟用unload解除安裝該assetbundle

未完待續…

Unity資源伺服器載入以及打包策略

主要內容 3 解壓資源,主要是對zip包進行壓縮。4 資源的讀取 assetbundle讀取 下面簡單介紹各個部分 1 assetbundle一鍵打包 windows assetbundle browser 1.1 新增需要打包的模型預製體 或者聲音 文字 其他 1.2 配置打包平台 android...

Unity打包載入場景(Assetbundle )

打包scene 我們可以把整個場景進行打包,因為移動平台不能更新指令碼,所以這個功能就會有所限制,我的建議是烘培場景,然後把多個場景可復用的物件移除,場景中只保留獨一無二的遊戲物件,然後再打包場景,執行遊戲時載入場景後,再動態的將之前移除的物件重新新增進來。menuitem custom edito...

Unity打包WebGL,html載入速度優化

unity打包webgl後,在日誌欄,看到這句提示 隨後查到,打包webgl時,壓縮格式選擇gzip,並修改iis webconfig引數,可以提公升webgl載入速度 打包後的資料夾如下。如果沒有web.config,可以手動建立 web.config中,新增下面中的內容。安裝iis url re...