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); } }