public void Recycle(BaseMessageBox item, object obj, System.Action <BaseMessageBox> action = null)
 {
     if (item == null)
     {
         return;
     }
     MessageBoxResquest.MessageType boxType = (MessageBoxResquest.MessageType)obj;
     if (m_AllTypeBoxPool.ContainsKey(boxType) == false)
     {
         Debug.LogError(" Recycle   UnIdentify Type :" + boxType);
         return;
     }
     if (MaxCount == 0 || m_AllTypeBoxPool[boxType].Count < MaxCount)
     {
         if (action != null)
         {
             action(item);
         }
         BaseObjectPool.PushPoolItem(PoolType.MsgBox, item.gameObject);
         item.gameObject.SetActive(false);
         m_AllTypeBoxPool[boxType].Push(item);
     }
     else
     {
         GameObject.DestroyImmediate(item.gameObject);
     }
 }
        public MseeageBoxPool(string sourcesPath, uint maxCount = 0)
        {
            SourcePath = sourcesPath;
            MaxCount   = maxCount;

            //初始化对象池
            var allBoxTypeEnum = System.Enum.GetValues(typeof(MessageBoxResquest.MessageType)); //获得所有的枚举类型定义

            foreach (var item in allBoxTypeEnum)
            {
                MessageBoxResquest.MessageType _currentEnum = (MessageBoxResquest.MessageType)System.Enum.Parse(typeof(MessageBoxResquest.MessageType), item.ToString());//获得当前的枚举类型
                if (_currentEnum != MessageBoxResquest.MessageType.None)
                {
                    m_AllTypeBoxPool.Add(_currentEnum, new Stack <BaseMessageBox>(2));
                }
            }
        }
        public BaseMessageBox GetInstance(string boxName, object obj, Transform parent = null, System.Action <BaseMessageBox> action = null)
        {
            BaseMessageBox _result = null;

            MessageBoxResquest.MessageType boxType = (MessageBoxResquest.MessageType)obj;
            if (m_AllTypeBoxPool.ContainsKey((MessageBoxResquest.MessageType)boxType) == false)
            {
                Debug.LogError("GetRes UnIdentify Type :" + boxType);
                return(null);
            }

            if (m_AllTypeBoxPool[boxType].Count > 0)
            {
                _result = m_AllTypeBoxPool[boxType].Pop();
            }

            if (_result != null)
            {
                _result.transform.SetParent(parent);
                _result.gameObject.SetActive(true);
            }
            else
            {
                GameObject go = Resources.Load <GameObject>(SourcePath + boxName);
                if (go != null)
                {
                    GameObject box = GameObject.Instantiate(go);
                    _result = box.GetComponent <BaseMessageBox>();
                }
            }


            if (action != null)
            {
                action(_result);
            }
            return(_result);
        }