处理AB包的依赖问题(Unity)创建⼀个依赖关系的类 存放依赖项和被引⽤项
创建两个字典储存包 和 依赖关键 包名为key
然后就是递归加载 内部先处理好包依赖 最后统⼀加载
完成进行时
public IEnumerator LoadAstBundle(string bundleName)
{
if (!_DicABRelation.ContainsKey(bundleName)) {
_DicABRelation.Add(bundleName, new ABRelation(bundleName));
}
二年级下学期班主任工作计划yield return AddBundleDepend(bundleName);
if (!_DicSingleABLoaderCache.ContainsKey(bundleName))
{
零点酒吧Debug.Log("加载包 : "+bundleName);
_CurrentSinglgABLoader = new SingleABLoader(bundleName, CompleteLoadAB);
广东高考分数线_DicSingleABLoaderCache.Add(bundleName, _CurrentSinglgABLoader);
yield return _CurrentSinglgABLoader.LoadAstBundle();
分数方程怎么解}
}
// 添加这个包所依赖其它包的信息
private IEnumerator AddBundleDepend(string bundleName) {
var DependeInfo = ABManifestLoader.GetInstance().RetrivalDependce(bundleName);
foreach (var dependBundleName in DependeInfo)
{
_DicABRelation[bundleName].AddDependence(dependBundleName);
yield return AddBundleRefrence(bundleName,dependBundleName);
}
}
生态驳岸
// 添加这个包被引⽤的信息
不置
private IEnumerator AddBundleRefrence(string bundleName, string dependBundleName) {
if (!_DicABRelation.ContainsKey(dependBundleName))
山猫吉米{
_DicABRelation.Add(dependBundleName, new ABRelation(dependBundleName));
Debug.Log("添加包引⽤ : "+ dependBundleName);
yield return LoadAstBundle(dependBundleName);
}
_DicABRelation[dependBundleName].AddReference(bundleName);
}