IEnumerator IELoadSceneAsync(Action <UnityEngine.Object, LoadEventData> loadComplete, LoadEventData evData) { var bRequest = AssetBundle.LoadFromFileAsync(PackagePath); IsLoading = true; yield return(bRequest); var abRequest = bRequest.assetBundle; if (abRequest == null) { yield break; } if (!bRequest.isDone) { yield break; } _bundle = abRequest; IsLoading = false; if (loadComplete != null) { loadComplete(_bundle, evData); } }
public void LoadSceneAsync(Action <UnityEngine.Object, LoadEventData> loadComplete, LoadEventData evData) { if (_bundle != null) { if (loadComplete != null) { loadComplete(_bundle, evData); } } else { CoroutineManager.Instance.StartCoroutine(IELoadSceneAsync(loadComplete, evData)); } }
private IEnumerator IELoadAssetAsync(string assetName, Action <UnityEngine.Object, LoadEventData> loadComplete, LoadEventData evData) { Debug.Log("name " + assetName); var ab = _bundle.LoadAssetAsync <UnityEngine.Object>(assetName); yield return(ab); // 添加资源缓存 AddRes(assetName, ab.asset); if (!_loadCompleteDict.ContainsKey(assetName)) { yield break; } var callbackList = _loadCompleteDict[assetName]; var callbackDataList = _loadEvDataDic[assetName]; for (int i = 0; i < callbackDataList.Count; i++) { LoadCallback(callbackList[i], GetAsset(assetName), callbackDataList[i]); //在加载缓存的时候还存在问题,_loadCompleteDict里面Key不知道怎么会少了一个,如果解决就可以去掉注释 //yield return 0; callbackList[i] = null; } callbackList = _loadCompleteDict[assetName]; callbackDataList = _loadEvDataDic[assetName]; var needDelete = callbackList.TrueForAll(c => c == null); if (needDelete) { _loadCompleteDict.Remove(assetName); } }
private IEnumerator IELoadBundleAsync(string assetName, Action <UnityEngine.Object, LoadEventData> loadComplete, LoadEventData evData) { bool isLoadCache = false; if (!IsLoadPackage) { var bRequest = AssetBundle.LoadFromFileAsync(PackagePath); IsLoading = true; yield return(bRequest); var abRequest = bRequest.assetBundle; if (abRequest == null) { yield break; } if (!bRequest.isDone) { yield break; } _bundle = abRequest; IsLoading = false; // 加载缓存资源 isLoadCache = _cacheAssetNameList.Count > 0; } if (IsUI || IsForverBundle) { RGLog.DebugResLoad("<color=red>LoadUI</color> {0}", _packageName); if (loadComplete != null) { loadComplete(_bundle, evData); } } else { CoroutineManager.Instance.StartCoroutine(IELoadAssetAsync(assetName, loadComplete, evData)); yield return(0); } // 加载缓存 CoroutineManager.Instance.StartCoroutine(LoadCache()); yield return(null); }
public void LoadAssetAsync(string assetName, Action <UnityEngine.Object, LoadEventData> loadComplete, LoadEventData evData) { // 先查找资源是否加载过,如果加载过资源就直接返回 RGRes res = FindRes(assetName); if (res != null) { var asset = GetAsset(assetName); loadComplete(asset, evData); return; } AddCallback(assetName, loadComplete, evData); CoroutineManager.Instance.StartCoroutine(IELoadAssetAsync(assetName, loadComplete, evData)); }
public void LoadBundleAsync(string assetName, Action <UnityEngine.Object, LoadEventData> loadComplete, LoadEventData evData) { // 先检查包是否存在 if (!File.Exists(PackagePath)) { RGLog.Error("<color=red>LoadBundleAsync</color> PackagePath not exits!!! -> <color=yellow>{0}</color>", PackagePath); if (loadComplete != null) { loadComplete(null, evData); } return; } if (IsLoading) { AddCache(assetName, loadComplete, evData); RGLog.Debug("<color=green>Bundle Loading ! Add Cache {0} -> {1}</color>", _packageName, assetName); } else { AddCallback(assetName, loadComplete, evData); CoroutineManager.Instance.StartCoroutine(IELoadBundleAsync(assetName, loadComplete, evData)); } }