public void LoadAddressableAsset(string address, OnAssetLoadedAction <UObject> callback) { Addressables.LoadAsset <UObject>(address).Completed += (opr) => { if (callback != null) { callback(opr.Result); } }; }
IEnumerator Cor_LoadAssetAsync(string bundleName, string assetName, OnAssetLoadedAction <Object> callback) { yield return(null); yield return(Cor_LoadBundleAsync(bundleName, null)); AssetBundle bundle; if (bundleDict.TryGetValue(bundleName, out bundle)) { AssetBundleRequest abR = bundle.LoadAssetAsync(assetName); yield return(abR); if (abR.isDone) { callback(abR.asset); } } }
IEnumerator Cor_LoadAssetAsync(string bundleName, string assetName, OnAssetLoadedAction <UObject> callback) { yield return(Cor_LoadBundleAsync(bundleName, null)); AssetBundle bundle; if (bundleDict.TryGetValue(bundleName, out bundle)) { #if UNITY_EDITOR if (ezApplication.packageMode == PackageMode.Develop) { string assetKey = GetAssetKey(bundleName, assetName); string assetPath; if (!assetPathDict.TryGetValue(assetKey, out assetPath)) { LogWarningFormat("{0} not exist.", assetKey); callback(null); } else { callback(UnityEditor.AssetDatabase.LoadAssetAtPath(assetPath, typeof(UObject))); } yield break; } #endif AssetBundleRequest abR = bundle.LoadAssetAsync(assetName); yield return(abR); if (abR.isDone) { callback(abR.asset); } } else { LogErrorFormat("Bundle not loaded: {0}", bundleName); } }
IEnumerator Cor_LoadAssetAsync(string bundleName, string assetName, OnAssetLoadedAction <Object> callback) { yield return(Cor_LoadBundleAsync(bundleName, null)); AssetBundle bundle; if (bundleDict.TryGetValue(bundleName, out bundle)) { #if UNITY_EDITOR if (EZFrameworkSettings.Instance.runMode == EZFrameworkSettings.RunMode.Develop) { string assetKey = GetAssetKey(bundleName, assetName); string assetPath; if (!assetPathDict.TryGetValue(assetKey, out assetPath)) { LogWarning(assetKey + " not exist."); callback(null); } else { callback(UnityEditor.AssetDatabase.LoadAssetAtPath(assetPath, typeof(Object))); } yield break; } #endif AssetBundleRequest abR = bundle.LoadAssetAsync(assetName); yield return(abR); if (abR.isDone) { callback(abR.asset); } } else { LogError("Bundle not loaded: " + bundleName); } }
public void LoadAssetAsync(string bundleName, string assetName, Type type, OnAssetLoadedAction <UObject> callback) { StartCoroutine(Cor_LoadAssetAsync(bundleName, assetName, type, callback)); }
// 异步加载资源,把异步封装成了同步+回调,Editor+Develop模式会变成同步加载,可能复现不了一些异步问题 public void LoadAssetAsync <T>(string bundleName, string assetName, OnAssetLoadedAction <T> callback) where T : UObject { StartCoroutine(Cor_LoadAssetAsync <T>(bundleName, assetName, callback)); }