二、資源管理4:ab包卸載

雖然是ab包的卸載,但是這里把資源釋放相關(guān)的幾個(gè)類型和方式都總結(jié)下。

1、 釋放實(shí)例化部分的內(nèi)存資源

這類資源有個(gè)特點(diǎn),就是都是使用Instaniate進(jìn)行實(shí)例化出來。
(1)GameObject類,在程序運(yùn)行時(shí)可以動(dòng)態(tài)地加載和銷毀釋放(Destory),Destory由Unity本身直接管理,無法控制其銷毀具體時(shí)機(jī)。
(2)非GameObject類的引用
Texture引用,shader引用,材質(zhì)引用等。如果是單獨(dú)實(shí)例化出來了,則屬于非生命周期管理的內(nèi)存,必須要手動(dòng)進(jìn)行卸載,用Destory(Texture)方式進(jìn)行卸載。

2、釋放虛擬機(jī)內(nèi)存中的ab包資源所占用的內(nèi)存

這類資源有個(gè)特點(diǎn),就是都是使用AssetBundle.LoadAsset從ab包資源內(nèi)存鏡像創(chuàng)建出來。
Resources.UnloadUnusedAssets();//卸載未占用的asset資源
System.GC.Collect();//回收內(nèi)存

3、釋放運(yùn)行內(nèi)存中的ab包資源內(nèi)存鏡像內(nèi)存

這類資源有個(gè)特點(diǎn),是從硬盤或網(wǎng)絡(luò)中下載后了ab包(此時(shí)還是壓縮文件)后,使用AssetBundle.LoadFromFile創(chuàng)建出來。
使用AssetBundle.UnloadAllAssetBundles或AssetBundle.Unload進(jìn)行卸載。

4、在移動(dòng)環(huán)境下unity釋放資源注意點(diǎn)

通常情況下做了場(chǎng)景切換后,上一個(gè)場(chǎng)景的所有東西都會(huì)進(jìn)行一個(gè)卸載,這時(shí)候通常也可以進(jìn)行一些內(nèi)存類的釋放操作,還有一類需要注意點(diǎn)的是。有些東西是DontDestory的,這時(shí)候如果是退出整個(gè)程序的操作則需要進(jìn)行具體的置空,而且一些靜態(tài)類也需要進(jìn)行銷毀。尤其是IOS的某個(gè)進(jìn)程里有內(nèi)置unity的情況,IOS調(diào)用Unity退出的時(shí)候要做這類操作,因?yàn)镮OS這邊是單進(jìn)程的。安卓調(diào)用Unity退出,是直接殺死進(jìn)程,調(diào)用的是Application.quit。

image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容