Exemplo n.º 1
0
 private void FixedUpdate()
 {
     if (!_Particle.isPlaying)
     {
         GameObjectPool.Put(this);
     }
 }
Exemplo n.º 2
0
        private static void CloseUi(PanelUi panelUI, bool force = false)
        {
            if (!force && panelUI.Dialog != null)
            {
                return;
            }

            _CloseStack.Clear();
            _CloseStack.Push(panelUI);

            var back = false;

            while (_CloseStack.Count != 0)
            {
                var curUi = _CloseStack.Peek();

                if (back)
                {
                    _CloseStack.Pop();

                    if (!curUi.CloseCheck())
                    {
                        return;
                    }
                    curUi.BeforeClose();

                    curUi.transform.SetParent(_UIRecycleContainer);
                    _ActiveUI.Remove(curUi);
                    if (curUi.Stable)
                    {
                        _HideStableUI.Add(curUi);
                        curUi.gameObject.SetActive(false);
                    }
                    else
                    {
                        GameObjectPool.Put(curUi);
                    }

                    continue;
                }

                if (DialogOpened(curUi.Dialog))
                {
                    _CloseStack.Push(curUi.Dialog);
                }
                else
                {
                    back = true;
                }
            }
        }