/// <summary> /// 加载Bundle /// </summary> /// <param name="assetName"></param> /// <param name="onComplete"></param> /// <param name="isSub"></param> internal static void LoadBundle(string assetName, UseGameObjectAssetDelegate onComplete, bool isSub) { if (!instance.data.assetBundlePath.ContainsKey(assetName)) { Debug.LogWarning("--Toto-- AssetBundleLoadManager->UseGameObjectAsset: '" + assetName + "' asset does not exist."); return; } // 判断回收站 if (instance.mRecycleBundleCached.ContainsKey(assetName)) { var list = instance.mRecycleBundleCached[assetName]; if (list.Count > 0) { Bundle bundleInstantiate = list.Dequeue(); bundleInstantiate.gameObject.SetActive(true); if (onComplete != null) { onComplete(assetName, bundleInstantiate); } return; } } // 判断缓存 if (instance.mAssetCached.ContainsKey(assetName)) { Bundle b = (Bundle)instance.mAssetCached[assetName]; if (b != null) { if (onComplete != null) { onComplete(assetName, InstantiateBundle(b)); } } return; } AssetLoadRequest loadRequest = (AssetLoadRequest)FindLoadRequestByName(assetName); if (loadRequest != null) { instance.mAssetLoadRequestWaitList.Add(new AssetLoadRequestWait() { assetName = assetName, onComplete = onComplete }); return; } string abPath = instance.data.assetBundlePath[assetName]; AssetLoadRequest abLoadRequest = new AssetLoadRequest(); abLoadRequest.assetName = assetName; abLoadRequest.onComplete = onComplete; abLoadRequest.isSub = isSub; instance.mAssetLoadRequestList.Add(abLoadRequest); // 添加至资源请求list instance.StartCoroutine(instance.LoadAssetBundle(abPath, abLoadRequest)); }
/// <summary> /// 加载Bundle /// </summary> /// <param name="assetName"></param> /// <param name="onComplete"></param> /// <param name="isSub"></param> internal static void LoadBundle(string assetName, UseGameObjectAssetDelegate onComplete, bool isSub) { if (!instance.data.assetBundlePath.ContainsKey(assetName)) { Debug.LogWarning("--Toto-- AssetBundleLoadManager->UseGameObjectAsset: '" + assetName + "' asset does not exist."); return; } // 判断回收站 if (instance.mRecycleBundleCached.ContainsKey(assetName)) { var list = instance.mRecycleBundleCached[assetName]; if (list.Count > 0) { Bundle bundleInstantiate = list.Dequeue(); bundleInstantiate.gameObject.SetActive(true); if (onComplete != null) onComplete(assetName, bundleInstantiate); return; } } // 判断缓存 if (instance.mAssetCached.ContainsKey(assetName)) { Bundle b = (Bundle)instance.mAssetCached[assetName]; if (b != null) { if (onComplete != null) onComplete(assetName, InstantiateBundle(b)); } return; } AssetLoadRequest loadRequest = (AssetLoadRequest)FindLoadRequestByName(assetName); if (loadRequest != null) { instance.mAssetLoadRequestWaitList.Add(new AssetLoadRequestWait() { assetName = assetName, onComplete = onComplete }); return; } string abPath = instance.data.assetBundlePath[assetName]; AssetLoadRequest abLoadRequest = new AssetLoadRequest(); abLoadRequest.assetName = assetName; abLoadRequest.onComplete = onComplete; abLoadRequest.isSub = isSub; instance.mAssetLoadRequestList.Add(abLoadRequest); // 添加至资源请求list instance.StartCoroutine(instance.LoadAssetBundle(abPath, abLoadRequest)); }
/// <summary> /// 使用GameObject资源 /// </summary> /// <param name="assetName"></param> /// <param name="onComplete"></param> public static void UseGameObjectAsset(string assetName, UseGameObjectAssetDelegate onComplete) { LoadBundle(assetName, onComplete, false); }