Пример #1
0
        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);
        }
Пример #2
0
 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;
             }
         });
     });
 }
Пример #3
0
        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);
        }