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; } } }
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); } }
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 }
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); } }
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); } }