Esempio n. 1
0
        private void CheckLoadSceneComplete()
        {
            if (this.wait_list.Count <= 0)
            {
                return;
            }

            foreach (WaitLoadSceneItem item in this.wait_list)
            {
                if (item.asyncOperation.isDone)
                {
                    LoadItem load_item = item.load_item;
                    if (null != load_item.load_callback)
                    {
                        AssetItem asset_item = new AssetItem();
                        asset_item.assetId = load_item.asset_id;
                        asset_item.type    = AssetType.SCENE;
                        asset_item.obj     = null;
                        load_item.load_callback(asset_item);
                    }

                    this.wait_list.Remove(item);
                    break;
                }
            }
        }
Esempio n. 2
0
        private IEnumerator AsyncLoadBundle(LoadItem load_item)
        {
            Debug.Log(string.Format("Load Bundle {0}", load_item.asset_id.bundleName));

            this.is_loading = true;
            string bundle_name = load_item.asset_id.bundleName;
            AssetBundleCreateRequest request = AssetBundle.LoadFromFileAsync(System.IO.Path.Combine(ASSET_BUNDLE_DIR, bundle_name));

            yield return(request);

            if (null == request.assetBundle)
            {
                yield break;
            }

            this.is_loading = false;
            AssetItem asset_item = new AssetItem();

            asset_item.obj     = request.assetBundle;
            asset_item.assetId = new AssetId(load_item.asset_id.bundleName, "");
            asset_item.type    = AssetType.BUNDLE;
            CacheManager.Instance.AddAssetItem(asset_item);

            if (null != load_item.load_callback)
            {
                load_item.load_callback(asset_item);
            }
        }
Esempio n. 3
0
        private void LoadLocalPrefab(LoadItem load_item)
        {
#if UNITY_EDITOR
            string[] paths = AssetDatabase.GetAssetPathsFromAssetBundleAndAssetName(
                load_item.asset_id.bundleName,
                load_item.asset_id.assetName);

            if (paths.Length <= 0)
            {
                return;
            }

            Debug.Log(string.Format("Load Local Prefab {0}", paths[0]));

            UnityEngine.Object obj = AssetDatabase.LoadAssetAtPath(paths[0], typeof(GameObject));
            if (null == obj)
            {
                return;
            }

            AssetItem item = new AssetItem();
            item.assetId = load_item.asset_id;
            item.type    = AssetType.PREFAB;
            item.obj     = obj;
            CacheManager.Instance.AddAssetItem(item);

            this.loadDic.Remove(item.assetId);
            if (null != load_item.load_callback)
            {
                load_item.load_callback(item);
            }
#endif
        }
Esempio n. 4
0
        private void Update()
        {
            if (this.loadQueue.Count <= 0)
            {
                return;
            }

            LoadItem load_item  = this.loadQueue.Dequeue();
            string   asset_name = load_item.asset_id.assetName;

            {
                AssetItem asset_item = CacheManager.Instance.GetAssetItem(load_item.asset_id, AssetType.PREFAB);
                if (null != asset_item)
                {
                    this.loadDic.Remove(asset_item.assetId);
                    load_item.load_callback(asset_item);
                    return;
                }
            }

            {
                AssetItem asset_item = CacheManager.Instance.GetAssetItem(load_item.asset_id, AssetType.BUNDLE);
                if (null != asset_item)
                {
                    Scheduler.RunCoroutine(
                        this.LoadPrefabFromBundle(asset_item, asset_name, load_item.load_callback));
                    return;
                }
            }

            {
                LoadItem load_bundle_item = new LoadItem();
                load_bundle_item.asset_id      = load_item.asset_id;
                load_bundle_item.type          = AssetType.BUNDLE;
                load_bundle_item.load_callback = (AssetItem asset_item) =>
                {
                    Scheduler.RunCoroutine(
                        this.LoadPrefabFromBundle(asset_item, asset_name, load_item.load_callback));
                };
                LoaderManager.Instance.LoadAsset(load_bundle_item);
            }
        }
Esempio n. 5
0
        private void Update()
        {
            if (this.loadQueue.Count <= 0)
            {
                return;
            }

            LoadItem load_item  = this.loadQueue.Dequeue();
            string   asset_name = load_item.asset_id.assetName;

            {
                AssetItem asset_item = CacheManager.Instance.GetAssetItem(load_item.asset_id, AssetType.PREFAB);
                if (null != asset_item)
                {
                    this.loadDic.Remove(asset_item.assetId);
                    load_item.load_callback(asset_item);
                    return;
                }
            }

            {
                this.LoadLocalPrefab(load_item);
            }
        }