IEnumerator WaitLoadObjects <T>(AssetBundleLoadAssetsOperation operation, UnityAction <T[]> onLoad) where T : UnityEngine.Object { yield return(operation); if (onLoad != null) { T[] asset = operation.GetAssets <T>(); onLoad.Invoke(asset); } }
/// <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"); } }