Esempio n. 1
0
    //加载AB包
    public IEnumerator LoadAssetBundle(string abName)
    {
        //AB包关系的建立
        if (!dicABRelation.ContainsKey(abName))
        {
            ABRelation aBRelationObj = new ABRelation(abName);
            dicABRelation.Add(abName, aBRelationObj);
        }
        ABRelation tmpABRelation = dicABRelation[abName];

        //得到所有的依赖关系
        string[] dependencearray = ABManifestLoader.GetInstance().RetrivalDependence(abName);
        foreach (string item_dependence in dependencearray)
        {
            //添加依赖
            tmpABRelation.AddDependence(item_dependence);
            //添加引用
            yield return(LoadRefence(item_dependence, abName));
        }
        //加载
        if (dicSingleABLoader.ContainsKey(abName))
        {
            yield return(dicSingleABLoader[abName].LoadAssetBundle());
        }
        else
        {
            curSingleABLoader = new SingleABLoader(abName, CompleteAB);
            dicSingleABLoader.Add(abName, curSingleABLoader);
            yield return(curSingleABLoader.LoadAssetBundle());
        }
        yield return(null);
    }
Esempio n. 2
0
    public IEnumerator LoadAssetBundle(string abName)
    {
        //ab包依赖关系的建立
        if (!m_relationDict.ContainsKey(abName))
        {
            ABRelation tempRelation = new ABRelation(abName);
            m_relationDict.Add(abName, tempRelation);
        }
        ABRelation abRelation = m_relationDict[abName];

        //得到ab包所有的依赖关系(查询清单文件)
        string[] strDependenceArr = ABManifestLoader.Instance.GetAllDependices(abName);
        for (int i = 0; i < strDependenceArr.Length; i++)
        {
            //添加依赖项
            abRelation.AddDependence(strDependenceArr[i]);
            //添加引用项
            yield return(LoadReferenceAB(strDependenceArr[i], abName));
        }

        //加载ab包
        if (m_singleABDict.ContainsKey(abName))
        {
            yield return(m_singleABDict[abName].LoadAssetBundle());
        }
        else
        {
            m_currentSingleABLoader = new SingleABLoader(abName, CompleteLoadABCallBack);
            m_singleABDict.Add(abName, m_currentSingleABLoader);
            yield return(m_currentSingleABLoader.LoadAssetBundle());
        }
    }
Esempio n. 3
0
    /// <summary>
    /// 释放本场景中的所有资源
    /// </summary>
    public void DisposeAllAsset()
    {
        List <string> keys = new List <string>();

        keys.AddRange(m_singleABDict.Keys);
        try
        {
            for (int i = 0; i < keys.Count; i++)
            {
                m_singleABDict[keys[i]].DisposeAll();
            }
        }
        catch (Exception ex)
        {
            Debug.LogError(ex);
        }
        finally
        {
            m_singleABDict.Clear();
            m_singleABDict = null;

            //释放其他的
            m_relationDict.Clear();
            m_relationDict = null;

            m_currentSingleABLoader = null;
            m_currentScenesName     = null;
            m_currentABName         = null;
            m_ABCompleteHandle      = null;

            //卸载没有使用到的资源
            Resources.UnloadUnusedAssets();

            //强制GC
            GC.Collect();
        }
    }
Esempio n. 4
0
 private void Start()
 {
     m_abLoader = new SingleABLoader(m_abName, LoadComplate);
     StartCoroutine(m_abLoader.LoadAssetBundle());
 }
Esempio n. 5
0
 // Use this for initialization
 void Start()
 {
     load = new SingleABLoader(ABname, LoadComplete);
     StartCoroutine(load.LoadAssetBundle());
 }
Esempio n. 6
0
 private void OnLoadComplete2(string ABName)
 {
     Debug.Log("加载ab包完毕");
     m_SingleABLoader3 = new SingleABLoader(ABName3, OnLoadComplete3);
     StartCoroutine(m_SingleABLoader3.LoadSingleAB());
 }
Esempio n. 7
0
 private void OnLoadComplete1(string ABName)
 {
     Debug.Log("加载ab包完毕");
     m_SingleABLoader2 = new SingleABLoader(ABName2, OnLoadComplete2);
     StartCoroutine(m_SingleABLoader2.LoadSingleAB());
 }
Esempio n. 8
0
 void Start()
 {
     m_SingleABLoader1 = new SingleABLoader(ABName1, OnLoadComplete1);
     StartCoroutine(m_SingleABLoader1.LoadSingleAB());
 }