公司商標(biāo)設(shè)計網(wǎng)站seo快速排名軟件方案
簡介
ABMgr
(Asset Bundle Manager)類是一個用于管理 Unity 中 AssetBundle 資源加載的管理器。它通過字典緩存和管理加載的 AB 包,同時支持同步和異步加載。還包含了卸載和清理 AB 包的方法。
功能解析:
-
主包加載與依賴管理:
- 主包加載:通過
LoadMainAB()
加載主包,并使用AssetBundleManifest
記錄 AB 包之間的依賴關(guān)系。 - 依賴包加載:通過
LoadDependencies()
方法,能夠自動加載 AB 包的依賴項(xiàng),確保目標(biāo) AB 包及其依賴項(xiàng)被正確加載。
- 主包加載:通過
-
字典緩存 AB 包:
- 使用
Dictionary<string, AssetBundle> abDic
來存儲已加載的 AB 包,防止重復(fù)加載帶來的錯誤和性能浪費(fèi)。
- 使用
-
資源加載:
- 提供了泛型、Type、名稱三種資源加載方式,支持同步和異步兩種模式。
- 異步加載使用協(xié)程,通過
AssetBundle.LoadFromFileAsync
和AssetBundleRequest
來實(shí)現(xiàn)異步資源加載,并且通過UnityAction<T>
回調(diào)函數(shù)將結(jié)果返回給調(diào)用方。
-
協(xié)程機(jī)制:
- 使用
StartCoroutine
來異步加載資源。協(xié)程函數(shù)會在加載過程中持續(xù)等待,直到 AB 包和資源加載完成,才返回給調(diào)用者。
- 使用
-
資源卸載與清理:
UnLoadAB(string name)
用于卸載特定的 AB 包。ClearAB()
可以卸載所有 AB 包,同時清空字典緩存。
-
支持的平臺:
- 根據(jù)不同的平臺(PC、Android、iOS),
MainName
會返回不同的主包名稱,確保在多平臺項(xiàng)目中的兼容性。
- 根據(jù)不同的平臺(PC、Android、iOS),
AssetBundle(AB包)解釋
AB包介紹
將AssetBundle面板設(shè)置為下圖
選中Browse
在項(xiàng)目下方創(chuàng)建AssetBundles文件夾
繼續(xù)在AssetBundles文件夾下創(chuàng)建PC文件夾
選中PC
代碼案例:
假設(shè)我們有一個名為 characters
的 AB 包,里面有一個名為 Hero
的預(yù)制體資源。我們想要異步加載并實(shí)例化該預(yù)制體。
代碼
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class ABMgrExample : MonoBehaviour
{GameObject obj;private void Start(){ABMgr.Instance.LoadResAsync<GameObject>("characters", "player", (ABObj) =>{obj = Instantiate(ABObj);Debug.Log(obj.gameObject.name);});Debug.Log("Start");}
}
解釋:
- 加載預(yù)制體資源:
ABMgr.Instance.LoadResAsync<GameObject>("characters", "Hero", OnHeroLoaded)
會異步加載characters
AB 包中的Hero
預(yù)制體。 - 回調(diào)函數(shù):加載完成后,
OnHeroLoaded
方法會被調(diào)用,heroPrefab
就是我們從 AB 包加載出來的資源。使用Instantiate
來實(shí)例化這個預(yù)制體。
這個案例展示了如何利用 ABMgr
異步加載資源并進(jìn)行實(shí)例化。