private IEnumerator LoadAssetsAsync(AssetsRequest request) { request.status = RequestStatus.Loading; yield return(LoadAssetsDependenciesAsync(request.path)); if (caches.ContainsKey(request.path)) { request.callback?.Invoke(caches[request.path]); request.status = RequestStatus.Complete; LoadAssetsAsync(); } else { yield return(loader.LoadAssetsAsync(request.path, (response) => { caches.Add(request.path, response); request.callback?.Invoke(response); request.status = RequestStatus.Complete; LoadAssetsAsync(); })); } }
public void LoadAsync(string path, Action <AssetsResponse> callback) { AssetsRequest request = requests.Find(x => x.path == path); if (request != null) { request.callback += callback; } else { requests.Add(new AssetsRequest() { path = path, callback = callback, status = RequestStatus.Ready, }); LoadAssetsAsync(); } }