public async void InternalLoadAssetAsync(string path, string file, CallBackDelegate <object, object> callBack, DelegateLoadBundleMehod method, GetPathFuncDelegate getExternalPathFunc, GetDependBundlesFuncDelegate getExternalDependcesFunc) { string assetBundleName = path + file; string assetBundlePath = getExternalPathFunc(assetBundleName); string[] dependencies = getExternalDependcesFunc(assetBundleName); if (taskList.Contains(assetBundleName)) { await new WaitUntil(() => !this.taskList.Contains(assetBundleName)); } taskList.Add(assetBundleName); if (!this.bundles.ContainsKey(assetBundleName)) { foreach (string dependency in dependencies) { if (string.IsNullOrEmpty(dependency)) { continue; } if (!this.bundles.ContainsKey(dependency) && !TestTaskList.Contains(dependency)) { await this.MyLoadOneBundleAsync(dependency, path); } else if (TestTaskList.Contains(dependency)) { await new WaitUntil(() => this.bundles.ContainsKey(assetBundleName) == true); } } } foreach (string dependency in dependencies) { await new WaitUntil(() => this.bundles.ContainsKey(dependency) == true); } method(path, file, callBack); taskList.Remove(assetBundleName); }
public void LoadTextTureAsync(string path, string file, CallBackDelegate <object, object> callBack, GetPathFuncDelegate getPathFunc, GetDependBundlesFuncDelegate getDependcesFunc) { this.InternalLoadAssetAsync(path, file, callBack, new DelegateLoadBundleMehod(this.SetTexture), getPathFunc, getDependcesFunc); }
public async void InternalLoadExternalAssetAsync(string path, string file, CallBackDelegate <object, object> callBack, DelegateLoadExternalMehod method, GetPathFuncDelegate getExternalPathFunc, GetDependBundlesFuncDelegate getExternalDependcesFunc) { string assetBundleName = path + file; string assetBundlePath = getExternalPathFunc(assetBundleName); string[] dependencies = getExternalDependcesFunc(assetBundleName); if (SyncResourceManager.CheckSyncAssetManagerLoaded("external/" + assetBundleName)) { // Debug.Log(assetBundleName); SyncResourceManager.LoadObjectExternal(path, file, callBack); return; } if (taskList.Contains("external/" + assetBundleName)) { await new WaitUntil(() => !this.taskList.Contains("external/" + assetBundleName)); } taskList.Add("external/" + assetBundleName); if (!this.bundles.ContainsKey("external/" + assetBundleName) && !this.resourceCache.ContainsKey("external/" + assetBundleName)) { foreach (string dependency in dependencies) { if (string.IsNullOrEmpty(dependency)) { continue; } if (!SyncResourceManager.CheckSyncAssetManagerLoaded("external/" + dependency)) { if (!TestTaskList.Contains("external/" + dependency) && !this.bundles.ContainsKey("external/" + dependency)) { await this.MyLoadOneBundleAsync("external/" + dependency, path); } else if (TestTaskList.Contains("external/" + dependency)) { await new WaitUntil(() => this.bundles.ContainsKey("external/" + dependency)); } } } } foreach (string dependency in dependencies) { if (string.IsNullOrEmpty(dependency)) { continue; } if (!SyncResourceManager.CheckSyncAssetManagerLoaded("external/" + dependency)) { await new WaitUntil(() => this.bundles.ContainsKey("external/" + dependency)); } } method(path, file, callBack, getExternalDependcesFunc); taskList.Remove("external/" + assetBundleName); }
public async void SetExternal(string path, string file, CallBackDelegate <object, object> mCall, GetDependBundlesFuncDelegate getExternalDependcesFunc) { string assetName = path + file; string[] dependencies = getExternalDependcesFunc(assetName); if (this.mAssetsLoaderAsyncDic.ContainsKey("external/" + assetName)) { Debug.Log("await"); await new WaitUntil(() => mAssetsLoaderAsyncDic.ContainsKey("external/" + assetName) == false && this.resourceCache.ContainsKey("external/" + assetName)); } if (this.resourceCache.ContainsKey("external/" + assetName)) { // Debug.Log(("external/" + assetName)); GameObject obj = GameObject.Instantiate((GameObject)this.resourceCache["external/" + assetName]); this.bundles["external/" + assetName].AddRefObj(obj); // Debug.Log("AddRef" + "external/" + assetName + "Num" + this.bundles["external/" + assetName].RefCount); foreach (var v in dependencies) { if (v != assetName) { if (!SyncResourceManager.CheckSyncAssetManagerLoaded("external/" + v)) { this.bundles["external/" + v].AddRefObj(obj); // Debug.Log("AddRef" + "external/" + v + "Num" + this.bundles["external/" + v].RefCount); } } } mCall(obj, file); // mLua.Call(obj, file); } else { AssetsLoaderAsync assetsLoaderAsync = new AssetsLoaderAsync(); assetsLoaderAsync.SetBundle(this.bundles["external/" + assetName].AssetBundle, "external/" + assetName); mAssetsLoaderAsync.Add(assetsLoaderAsync); mAssetsLoaderAsyncDic["external/" + assetName] = assetsLoaderAsync; GameObject temp = (GameObject)await assetsLoaderAsync.LoadAssetAsync(file); GameObject obj = GameObject.Instantiate(temp); this.bundles["external/" + assetName].AddRefObj(obj); // Debug.Log("AddRef" + "external/" + assetName + "Num" + this.bundles["external/" + assetName].RefCount); foreach (var v in dependencies) { if (v != assetName) { if (!SyncResourceManager.CheckSyncAssetManagerLoaded("external/" + v)) { this.bundles["external/" + v].AddRefObj(obj); // Debug.Log("AddRef" + "external/" + v + "Num" + this.bundles["external/" + v].RefCount); } } } this.bundles["external/" + assetName].AssetBundle.Unload(false); this.resourceCache["external/" + assetName] = temp; mCall(obj, file); //mLua.Call(obj,file); } }