示例#1
0
 public void LoadAddressableAsset(string address, OnAssetLoadedAction <UObject> callback)
 {
     Addressables.LoadAsset <UObject>(address).Completed += (opr) =>
     {
         if (callback != null)
         {
             callback(opr.Result);
         }
     };
 }
示例#2
0
        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);
                }
            }
        }
示例#3
0
        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);
            }
        }
示例#4
0
        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);
            }
        }
示例#5
0
 public void LoadAssetAsync(string bundleName, string assetName, Type type, OnAssetLoadedAction <UObject> callback)
 {
     StartCoroutine(Cor_LoadAssetAsync(bundleName, assetName, type, callback));
 }
示例#6
0
 // 异步加载资源,把异步封装成了同步+回调,Editor+Develop模式会变成同步加载,可能复现不了一些异步问题
 public void LoadAssetAsync <T>(string bundleName, string assetName, OnAssetLoadedAction <T> callback) where T : UObject
 {
     StartCoroutine(Cor_LoadAssetAsync <T>(bundleName, assetName, callback));
 }