Example #1
0
        public virtual void Close(bool force)
        {
            if (_needCloseFader)
            {
                _needCloseFader = false;
                DialogFader.FadeOut(this, _faderDuration, force, () => FaderVisible = false);
            }

            _canvasGroup.blocksRaycasts = false;

            if (force)
            {
                if (_state == FormState.Closed && !gameObject.activeSelf)
                {
                    return;
                }

                OnClose();
                if (CloseEvent != null)
                {
                    CloseEvent();
                }
                OnClosed();
                if (ClosedEvent != null)
                {
                    ClosedEvent.Invoke();
                }

                gameObject.SetActive(false);
            }
            else
            {
                if (IsClose)
                {
                    return;
                }

                _state = FormState.Closing;

                OnClose();
                if (CloseEvent != null)
                {
                    CloseEvent();
                }

                if (_processRoutine != null)
                {
                    StopCoroutine(_processRoutine);
                }
                _processRoutine = CloseAsync();
                StartCoroutine(_processRoutine);
            }
        }
Example #2
0
        public virtual void Destroy()
        {
            if (_needCloseFader)
            {
                _needCloseFader = false;
                DialogFader.FadeOut(this, true, () => FaderVisible = false);
            }

            if (gameObject != null)
            {
                if (UIManager.UseCache && UIManager.Instance.IsFormCached(this))
                {
                    gameObject.SetActive(false);
                }
                else
                {
                    Destroy(gameObject);
                }
            }
        }