private IEnumerator CreateViewGo <T>(IProgressPromise <float, T> promise, View view, string path, ViewModel viewModel) where T : View { var request = _res.LoadAssetAsync <GameObject>(path); while (!request.IsDone) { promise.UpdateProgress(request.Progress); yield return(null); } GameObject viewTemplateGo = request.Result; if (viewTemplateGo == null) { promise.UpdateProgress(1f); Log.Error($"Not found the window path = \"{path}\"."); promise.SetException(new FileNotFoundException(path)); yield break; } GameObject go = Object.Instantiate(viewTemplateGo); view.SetGameObject(go); go.name = viewTemplateGo.name; promise.UpdateProgress(1f); promise.SetResult(view); view.SetVm(viewModel); }
Action <string> IFieldChangeCb <string> .GetFieldChangeCb() { return(path => { if (string.IsNullOrEmpty(path)) { return; } IRes res = null; if (Container is ICustomRes customRes) { res = customRes.GetRes(); } else { res = Res.Default; } res.LoadAssetAsync <Texture>(path).Callbackable() .OnCallback(result => { if (result.IsCancelled) { return; } if (Component != null) { Component.texture = result.Result; } }); }); }
private IEnumerator CreateView <T>(IProgressPromise <float, T> promise, Type type, ViewModel viewModel) where T : View { if (_openedViews.TryGetValue(type, out var view)) { promise.UpdateProgress(1f); promise.SetResult(view); yield break; } view = ReflectionHelper.CreateInstance(type) as View; var path = (GetClassData(type).Attribute as UIAttribute).Path; var request = _res.LoadAssetAsync <GameObject>(path); while (!request.IsDone) { promise.UpdateProgress(request.Progress); yield return(null); } GameObject viewTemplateGo = request.Result; if (viewTemplateGo == null) { promise.UpdateProgress(1f); Log.Error($"Not found the window path = \"{path}\"."); promise.SetException(new FileNotFoundException(path)); yield break; } GameObject go = Object.Instantiate(viewTemplateGo); go.name = viewTemplateGo.name; view.SetGameObject(go); view.SetVm(viewModel); view.Visible(false); promise.UpdateProgress(1f); promise.SetResult(view); }