Esempio n. 1
0
    void Update()
    {
        // 检查场景是否加载完成
        if (this.sceneLoader != null)
        {
            if (this.sceneLoader.IsDone())
            {
                SceneLoader loader = this.sceneLoader;
#if ASSETBUNDLE
                this.loadedAssetBundleSceneLoaderDict[loader.SceneName] = this.sceneLoader as AssetBundleSceneLoader;
#endif
                this.sceneLoader = null;
                if (loader.LoadDoneCallback != null)
                {
                    loader.LoadDoneCallback(loader.SceneName);
                }
            }
            else
            {
                if (this.sceneLoader.LoadUpdateCallback != null)
                {
                    this.sceneLoader.LoadUpdateCallback(this.sceneLoader.SceneName, this.sceneLoader.GetProgress());
                }
            }
        }
        // 遍历正在加载的资源,检测是否已经加载完成
        foreach (KeyValuePair <string, IResLoader> resLoaderKV in this.loadingResDict)
        {
            string     resName = resLoaderKV.Key;
            IResLoader loader  = resLoaderKV.Value;
            if (loader.IsDone())
            {
                //Debug.Log(string.Format("{0} done at {1}", resName, Time.frameCount));
                this.loadedResList.Add(resName);
            }
        }
        // 规避遍历字典删除元素的语法,在加载完成后可能会再次启动加载
        for (int i = 0; i < this.loadedResList.Count; ++i)
        {
            string     resName = this.loadedResList[i];
            IResLoader loader  = this.loadingResDict[resName];
#if ASSETBUNDLE
            // 加入到缓存的AssetBundle列表
            AssetBundleLoader abLoader = loader as AssetBundleLoader;
            this.loadedAssetBundleLoaderDict[resName] = abLoader;
#endif
            if (loader.LoadDoneCallback != null)
            {
                loader.LoadDoneCallback(resName, loader.GetResObj());
            }
            this.loadingResDict.Remove(resName);
        }
        this.loadedResList.Clear();
    }