一、讀取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...