/// <summary> /// 异步加载一组资源 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="assetBundleName"></param> /// <param name="onAssetsLoad"></param> public void LoadAssetsFromUrlAsync <T>(string assetBundleName, UnityAction <T[]> onAssetsLoad) where T : UnityEngine.Object { #if UNITY_EDITOR if (canSimulation && SimulateAssetBundleInEditor) { T[] asset = simuationLoader.LoadAssets <T>(assetBundleName); onAssetsLoad(asset); return; } #endif if (activeLoader != null) { LoadMenu(() => { //onAssetsLoad += (x) => { activeLoader.UnloadAssetBundle(assetBundleName); }; AssetBundleLoadAssetsOperation operation = activeLoader.LoadAssetsAsync(assetBundleName, typeof(T)); StartCoroutine(WaitLoadObjects(operation, onAssetsLoad)); }); } else { Debug.Log("Please Set Menu"); } }
/// <summary> /// 从url异步从bundle中加载一组资源 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="assetBundleName"></param> /// <param name="assetNames"></param> /// <param name="allAssetLoad"></param> public void LoadAssetsFromUrlAsync <T>(string assetBundleName, string[] assetNames, UnityAction <T[]> allAssetLoad) where T : UnityEngine.Object { #if UNITY_EDITOR if (SimulateAssetBundleInEditor) { T[] asset = simuationLoader.LoadAssets <T>(assetBundleName, assetNames); allAssetLoad(asset); return; } #endif if (activeLoader != null) { LoadMenu(() => { T[] objectPool = new T[assetNames.Length]; int j = 0; for (int i = 0; i < assetNames.Length; i++) { int index = i; UnityAction <T> loadOnce = (x) => { objectPool[index] = x; j++; if (j == assetNames.Length) { allAssetLoad(objectPool); activeLoader.UnloadAssetBundle(assetBundleName); } }; AssetBundleLoadAssetOperation operation = activeLoader.LoadAssetAsync(assetBundleName, assetNames[index], typeof(T)); StartCoroutine(WaitLoadObject(operation, loadOnce)); } }); } else { Debug.Log("Please Set Menu"); } }