Ejemplo n.º 1
0
 private void InternalClose(bool callByUiManager)
 {
     if (IsViewRemoved)
     {
         // 防止重复调用
         return;
     }
     IsViewRemoved = true;
     _updator      = null;
     _fixedUpdator = null;
     _lateUpdator  = null;
     Presenter.OnViewRecycle();
     if (callByUiManager)
     {
         UiManager.Instance.CloseView(this);
     }
     Presenter.OnViewRemoved();
     if (_dispatchers != null)
     {
         foreach (var item in _dispatchers)
         {
             item.RemoveAllEventListeners();
         }
         _dispatchers.Clear();
     }
     Destroy(gameObject);
     if (!NoMask)
     {
         Destroy(MaskGo);
     }
 }
Ejemplo n.º 2
0
 /// <summary>
 /// 关闭UI
 /// </summary>
 public void Close()
 {
     if (IsViewRemoved)
     {
         // 防止重复调用
         return;
     }
     IsViewRemoved = true;
     _updator      = null;
     _fixedUpdator = null;
     _lateUpdator  = null;
     Presenter.OnViewRecycle(true);
     if (UiManager.HasSingleton())
     {
         UiManager.Instance.CloseViewFromBaseView(this);
     }
     Presenter.OnViewRemoved();
     if (_dispatchers != null)
     {
         foreach (var item in _dispatchers)
         {
             item.RemoveAllEventListeners();
         }
         _dispatchers.Clear();
     }
 }
Ejemplo n.º 3
0
        /// <summary>
        /// 设置Update函数
        /// </summary>
        /// <param name="updator">需要执行的方法</param>
        /// <param name="type">类型</param>
        public void SetUpdator(ViewUpdator updator, ViewUpdateType type = ViewUpdateType.Update)
        {
            switch (type)
            {
            case ViewUpdateType.Update:
                _updator = updator;
                break;

            case ViewUpdateType.FixedUpdate:
                _fixedUpdator = updator;
                break;

            case ViewUpdateType.LateUpdate:
                _lateUpdator = updator;
                break;

            default:
                throw new ArgumentException("无效类型");
            }
        }