Esempio n. 1
0
 /// <summary>
 /// 开启窗口(同步)
 /// </summary>
 /// <typeparam name="TView">窗口类型</typeparam>
 /// <returns>窗口对象</returns>
 public TView SyncOpenView <TView>() where TView : BaseView, new()
 {
     try
     {
         var viewName = typeof(TView).Name;
         var view     = _cache.FirstAllFromKey(p => p.GetType() == typeof(TView));
         if (view.Item1 == null)
         {
             var initView = InitView <TView>();
             view = new Tuple <BaseView, Transform>(initView.Item1, initView.Item2);
             _cache.Set(view.Item1, view.Item2);
             Dispatcher.DoWork($"OnInitView_{viewName}");   //执行初始化
             Dispatcher.DoWork($"AddDelegates_{viewName}"); //执行监听任务
         }
         else
         {
             view.Item2.gameObject.SetActive(true);
         }
         Dispatcher.DoWork($"SyncOpenView_{viewName}"); //执行窗口开启
         return(view.Item1 as TView);
     }
     catch (Exception e)
     {
         Debug.LogError($"同步开启窗口{typeof(TView)}失败,原因:{e}");
     }
     return(null);
 }
Esempio n. 2
0
        /// <summary>
        /// 添加组件
        /// </summary>
        /// <typeparam name="TComponent">组件类型</typeparam>
        /// <param name="target">目标对象</param>
        /// <param name="tag">组件标识</param>
        /// <returns>添加的或者已存在的对象</returns>
        public static TComponent CreateComponent <TComponent>(string tag = null) where TComponent : BaseComponent, new()
        {
            var component = new TComponent()
            {
                Tag = tag
            };

            _cache.Set(component.Id, component);
            return(component);
        }