前言
我們?cè)陂_發(fā)項(xiàng)目時(shí),會(huì)發(fā)現(xiàn)資源管理模塊往往在項(xiàng)目架構(gòu)中扮演著重要的角色,而且一個(gè)游戲的流暢性和內(nèi)存方面的性能優(yōu)化,往往也能看到資源管理的影子,所以一個(gè)優(yōu)秀強(qiáng)大的資源管理方案對(duì)一個(gè)項(xiàng)目開發(fā)者來說是一個(gè)強(qiáng)大的輪子。
一、什么是YooAsset
YooAsset是一套用于Unity3D的資源管理系統(tǒng),它在AssetBundle資源管理上非常強(qiáng)大,擁有靈活強(qiáng)大的打包方式和高效率分布式加載,而且針對(duì)資源熱更新也有成熟的解決方案,可對(duì)項(xiàng)目各種使用場(chǎng)景都有強(qiáng)大的支持能力。
下載地址在文末。
二、使用步驟
1.導(dǎo)入插件
參考官方文檔的導(dǎo)入方式
安裝尋址插件Addressable
2.配置文件
通過右鍵創(chuàng)建配置文件(Project窗體內(nèi)右鍵 -> Create -> YooAsset -> Create Setting),配置中第二個(gè)選項(xiàng)Default Yoo Folder Name表示為資源打包后保存在常態(tài)化路徑下的文件夾名稱,可以自定義修改,其他的不需要修改。
3.資源打包策略
詳細(xì)說明看官方文檔
創(chuàng)建打包策略配置文件,頂部擴(kuò)展菜單欄YooAsset/AssetBundleCollector
Package Name:資源包名,可有多個(gè);
Group:資源分組,可將相同模塊的資源分一個(gè)組或者將相同類型的資源分一個(gè)組,我這里是將資源類型分一個(gè)組;
Collector:收集器,可以是文件夾也可以是單獨(dú)的文件;
尋址路徑:
AddressByGroupAndFileName是表示尋址路徑為Group名稱+“_”+資源名稱,還有別的尋址類型,可自行研究,尋址路徑是為了后面加載資源時(shí)用來作為唯一標(biāo)識(shí)的。
4.資源打包
詳細(xì)說明參考官方文檔
資源構(gòu)建,頂部擴(kuò)展菜單欄YooAsset/AssetBundleBuilder
構(gòu)建完成后,常態(tài)化路徑下會(huì)增加一個(gè)文件夾如下,這就是構(gòu)建后的資源包
5.資源加載
詳細(xì)說明參考官方文檔
初始化資源包,此步驟是后續(xù)所有資源加載的基礎(chǔ),必須保持此步驟成功,才能進(jìn)行資源加載
public void InitPackage()
{
YooAssets.Initialize();
// 創(chuàng)建默認(rèn)的資源包
string packageName = "DefaultPackage";
_package = YooAssets.TryGetPackage(packageName);
if (_package == null)
{
_package = YooAssets.CreatePackage(packageName);
//創(chuàng)建資源包初始化參數(shù)(用來定義資源路徑)
_async = _package.InitializeAsync(GetInitializeParameters());
_async.Completed += OnCompleted;
YooAssets.SetDefaultPackage(_package);
}
}
//創(chuàng)建資源包初始化參數(shù)(用來定義資源路徑)
private InitializeParameters GetInitializeParameters()
{
//離線路徑
return new OfflinePlayModeParameters();
}
private async void OnCompleted(AsyncOperationBase obj)
{
Debug.Log("資源包加載完成!!");
//資源包加載完畢,開始加載資源,location為尋址路徑Group名稱+“_”+資源名稱,如果沒有開啟尋址,location即為完整素材路徑
var handler= _package.LoadAssetAsync<GameObject>("Prefabs_3Seat");
await handler.Task;
var go = handler.AssetObject as GameObject;
go=Instantiate(go);
go.transform.SetPositionAndRotation(Vector3.zero, Quaternion.identity);
}
加載成功!!
總結(jié)
上文描述的是一個(gè)YooAsset插件最基礎(chǔ)的用法,YooAsset在具體的項(xiàng)目還需要進(jìn)行功能封裝,其中同步加載和異步加載在不同場(chǎng)景中的應(yīng)用也要根據(jù)具體情況而定,插件功能非常強(qiáng)大,有興趣的可以自行探索。文章來源:http://www.zghlxwxcb.cn/news/detail-806920.html
【官方文檔】
【下載地址】文章來源地址http://www.zghlxwxcb.cn/news/detail-806920.html
到了這里,關(guān)于unity資源管理方案-YooAsset的使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!