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); } }
/// <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(); } }
/// <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("无效类型"); } }