/// <summary>
        /// 内部调用, 加载AB包
        /// </summary>
        /// <param name="abName"></param>
        /// <returns></returns>
        private IEnumerator LoadAssetBundle(string abName)
        {
            // AB包关系的建立
            if (!_DicABRelation.ContainsKey(abName))
            {
                //建立关系
                ABRelation abRelation = new ABRelation(abName);
                _DicABRelation.Add(abName, abRelation);
            }
            ABRelation tempABRelation = _DicABRelation[abName];     // 获得当前AB包的依赖关系

            // 得到指定AB包所有的依赖关系(查询Manifest清单)
            string[] strDependeceArray = ABManifestLoader.Instance.GetAssetBundleDependce(abName);
            foreach (var depend in strDependeceArray)
            {
                // 添加依赖项
                tempABRelation.AddDependence(depend);
                // 先加载依赖的AB包并设置被依赖关系
                yield return(LoadReference(depend, abName));
            }

            //真正加载AB包
            if (_DicSingleABLoaderCache.ContainsKey(abName))
            {
                yield return(_DicSingleABLoaderCache[abName].LoadAssetBundle());
            }
            else
            {
                _CurrentSingleABLoader = new SingleABLoader(abName, CompleteLoadAB);
                _DicSingleABLoaderCache.Add(abName, _CurrentSingleABLoader);
                yield return(_CurrentSingleABLoader.LoadAssetBundle());
            }
        }
示例#2
0
 void LoadComplete1(string abName)
 {
     _loadObj2 = new AssetBundleFramework.SingleABLoader(_assetbundleName, LoadComplete2);
     StartCoroutine(_loadObj2.LoadAssetBundle());
 }
示例#3
0
    //void Start()
    //{
    //    _loadObj = new AssetBundleFramework.SingleABLoader(_assetbundleName, LoadComplete);
    //    StartCoroutine(_loadObj.LoadAssetBundle());

    //}

    //void LoadComplete(string abName)
    //{
    //    GameObject prefab = _loadObj.LoadAsset(_assetName) as GameObject;
    //    GameObject.Instantiate(prefab);
    //    prefab.transform.position = new Vector3(0, 0, 0);
    //}
    #endregion

    void Start()
    {
        _loadObj = new AssetBundleFramework.SingleABLoader(_assetbundleDependName, LoadComplete1);
        StartCoroutine(_loadObj.LoadAssetBundle());
    }