Пример #1
0
    public IEnumerator LoadSceneAsync(string sceneName, ResPackge.AsyncLoadData data, Action callback = null)
    {
        bool   isLoaded = false;
        string szNm     = Path.GetFileNameWithoutExtension(sceneName).ToLower();

        if (mPackDic != null)
        {
            ResPackItm itm = null;
            if (mResDic.TryGetValue(szNm + ".unity", out itm))
            {
                ResPackge pck = null;
                if (mPackDic.TryGetValue(itm.mPack, out pck))
                {
                    IEnumerator e = pck.LoadPackageAsync(data);
                    while (true)
                    {
                        e.MoveNext();
                        if (data.IsFinish)
                        {
                            break;
                        }
                        yield return(e.Current);
                    }
                    isLoaded = pck.LoadLevel(sceneName);
                    AddDelayCleanPackage(pck);
                }
            }
        }
        data.IsFinish = true;
        if (!isLoaded)    // 也许没有打包或用Unity打包
        {
            string unitySceneName = Path.GetFileNameWithoutExtension(sceneName);
            Application.LoadLevel(unitySceneName.ToLower());
        }
        if (callback != null)
        {
            callback();
        }
    }