讀取AssetBundle依賴關係載入模型

2021-09-12 13:27:27 字數 4271 閱讀 9038

一、讀取assetbundle依賴關係檔案

/***

**   title: "assetbundle簡單框架"專案

*           輔助類: 

*                讀取assetbundle 依賴關係清單檔案。(windows.manifest)

**   description:

*          功能: 

**   author: liuguozhu

**   date: 2017.10

**   modify:  **/

using system;

using system.collections;

using system.collections.generic;

using unityengine;

namespace abfw

}///

/// 獲取本類例項

///

///

public static abmanifestloader getinstance()

return _instance;}}

}///

/// 獲取assetbundlemanifest 系統類例項

///

///

public assetbundlemanifest getabmanifest()

else

}else

return null;

}///

/// 獲取assetbundlemanifest(系統類) 指定包名稱依賴項

///

/// ab包名稱

///

public string retrivaldependce(string abname)

return null;

}/// 《釋放本類資源summary>

/// 釋放本類資源

///

public void dispose()}}

}二、儲存依賴關係與引用

/***

**   title: "assetbundle簡單框架"專案

*           工具輔助類: 

*               assetbundle 關係類

**   description:

*          功能: 

*              1: 儲存指定ab包的所有依賴關係包

*              2: 儲存指定ab包所有的引用關係包

**   author: liuguozhu

**   date: 2017.10

**   modify:  **/

using system.collections;

using system.collections.generic;

using unityengine;

namespace abfw

_lisalldependenceab = new list();

_lisallreferenceab = new list();

}/* 依賴關係 */

///

/// 增加依賴關係

///

/// assetbundle 包名稱

public void adddependence(string abname)

}///

/// 移除依賴關係

///

/// 移除的包名稱

///

/// true; 此assetbundel 沒有依賴項

/// false;  此assetbundel 還有其他的依賴項

/// 

///

public bool removedependece(string abname)

if (_lisalldependenceab.count > 0)

else

}//獲取所有依賴關係

public listgetalldependence()

/* 引用關係 */

///

/// 引用依賴關係

///

/// assetbundle 包名稱

public void addreference(string abname)

}///

/// 移除引用關係

///

/// 移除的包名稱

///

/// true; 此assetbundel 沒有引用項

/// false;  此assetbundel 還有其他的引用項

/// 

///

public bool removereference(string abname)

if (_lisallreferenceab.count > 0)

else

}//獲取所有引用關係

public listgetallreference()}}

三、管理多個assetbundle

/***

**   title: "assetbundle簡單框架"專案

*           主流程(3層):(乙個場景中)多個assetbundle 包管理

**   description:

*          功能: 

*              1: 獲取ab包之間的依賴與引用關係。

*              2: 管理assetbundle包之間的自動連鎖(遞迴)載入機制

**   author: liuguozhu

**   date: 2017.10

**   modify:  **/

using system.collections;

using system.collections.generic;

using unityengine;

namespace abfw

///

/// 完成指定ab包呼叫

///

/// ab包名稱

private void completeloadab(string abname)}}

///

/// 載入ab包

///

/// assetbundle 名稱

///

public ienumerator loadassetbundeler(string abname)

abrelation tmpabrelationobj = _dicabrelation[abname];

//得到指定ab包所有的依賴關係(查詢manifest清單檔案)

string strdependecearray = abmanifestloader.getinstance().retrivaldependce(abname);

foreach (string item_depence in strdependecearray)

//真正載入ab包

if (_dicsingleabloadercache.containskey(abname))

else

}//method_end

///

/// 載入引用ab包

///

/// ab包名稱

/// 被引用ab包名稱

///

private ienumerator loadreference(string abname,string refabname)

else

}///

/// 載入(ab包中)資源

///

/// assetbunlde 名稱

/// 資源名稱

/// 是否使用(資源)快取

///

public unityengine.object loadasset(string abname, string assetname, bool iscache)

}debug.logerror(gettype()+ "/loadasset()/找不到asetbunder包,無法載入資源,請檢查! abname="+ abname+ " assetname="+ assetname);

return null;

}///

/// 釋放本場景中所有的資源

///

public void disposeallasset()

}finally}}

處理Assetbundle依賴關係時想到的一道題

在處理unit3d的assetbundle依賴關係的時候,想到了一道有趣的題目 給定一堆資料,例如,b c d e 先判斷依賴關係,例如a包含b,e包含b,e包含c,然後分組,能包含的可以分為同一組,例如a b d,e c 求分組的方案以及最優的方案?這道題的答案其實很簡單,分組方案有兩種 這道題裡...

新版AssetBundle使用

ab流程 友情提示 設定assetbundle 從上述的說明感覺這個new出來的是乙個空資料夾識,在設定資源時這個資料夾的名字作為了標識來使用。而remove unused names按鈕就是一鍵刪除空資料夾。生成assetbundle public class createassetbundles...

AssetBundle資源載入

一 第一種載入方式本地相對路徑資源載入 assetbundle ab assetbundle.loadfromfile assetbundle sphere.unity3d 本地載入相對路徑載入 載入ab包 gameobject cube ab.loadasset sphere 獲取ab包 inst...