public void LoadAsync <T>(string path, Action <T> callback, string assetName) where T : UnityEngine.Object { if (_loadingAsset.ContainsKey(path.GetHashCode())) { _loadingAsset[path.GetHashCode()].callback += (Action <UnityEngine.Object>)callback; return; } AsyncLoadTask asyncLoadTask = new AsyncLoadTask(); asyncLoadTask.callback += (Action <UnityEngine.Object>)callback; Coroutine coroutine = CoroutineTool.Instance.StartCoroutine(LoadAsync <T>(path, assetName, asyncLoadTask)); asyncLoadTask.coroutine = coroutine; //_loadingAsset.Add(path.GetHashCode(), coroutine); }
private IEnumerator LoadAsync <T>(string path, string assetName, AsyncLoadTask asyncLoadTask) where T : UnityEngine.Object { yield return(LoadOneAsync <T>(path)); AssetBundleInfo assetBundleInfo; if (_curAllBundleInfos.TryGetValue(path.GetHashCode(), out assetBundleInfo)) { if (string.IsNullOrEmpty(assetName)) { asyncLoadTask.callback?.Invoke(assetBundleInfo.As <T>()); } else { asyncLoadTask.callback?.Invoke(assetBundleInfo.GetOneAsset <T>(assetName)); } } else { asyncLoadTask.callback?.Invoke(null); } _loadingAsset.Remove(path.GetHashCode()); }