private IEnumerator LoadAsyncImpl(LoadRequest request, Func <string, object> syncLoadFunc) { var req = Task.Run(() => { try { return(syncLoadFunc(_rootPath + "/" + request.fileName)); } catch (Exception e) { return(e); } }); yield return(req); if (req.Result is Exception) { request.SetError((req.Result as Exception).Message); } else { request.SetResult(req.Result); } }
private IEnumerator LoadSprite_Async(LoadRequest rRequest) { if (string.IsNullOrEmpty(this.mSpriteName)) { this.Image.sprite = null; rRequest.SetResult(rRequest); yield break; } var rLoadRequest = UIAtlasManager.Instance.LoadSprite(this.mSpriteName); yield return(rLoadRequest); if (rLoadRequest == null || rLoadRequest.Result == null || rLoadRequest.Result.Sprite == null) { Debug.LogErrorFormat("not find sprite: {0}", this.SpriteName); this.Image.sprite = null; rRequest.SetResult(rRequest); yield break; } this.Image.sprite = rLoadRequest.Result.Sprite; }
private IEnumerator LoadAssetbundle(LoadRequest request) { var req1 = abl.LoadAssetBundle(_rootpath + "/" + request.fileName); yield return(req1); if (req1.Error != null) { request.SetError(req1.Error); yield break; } request.SetResult(req1.Result); }
private IEnumerator LoadObjectImpl(LoadRequest request) { string assetName; string fileName = SplitFileName(request.fileName, out assetName); var req1 = abl.LoadAssetBundle(_rootpath + fileName); yield return(req1); if (req1.Error != null) { request.SetError(req1.Error); yield break; } var assetBundle = req1.Result; if (assetBundle.isStreamedSceneAssetBundle) { request.SetError("Cannot loadAsset from StreamedSceneAssetBundle"); yield break; } var req2 = (string.IsNullOrEmpty(assetName)) ? assetBundle.LoadAllAssetsAsync(request.assetType) : assetBundle.LoadAssetAsync(assetName, request.assetType); yield return(req2); var asset = req2.asset; if (asset == null) { request.SetError("AssetBundle.LoadAssetAsync failed"); } else { request.SetResult(asset); } }