/// <summary> /// 返还一个对象 /// </summary> /// <param name="Obj"></param> public void BackObj(T Obj, PoolObjBackFunc <T> BackFunc = null) { Pool.BackObj(0, Obj, BackFunc); if ((m_CurUseList == null) || (m_T_ID_HashTable == null)) { return; } int ID = -1; ID = GetIDByObj(Obj); if (ID >= 0) { m_CurUseList.Remove(ID); m_T_ID_HashTable.Remove(Obj); } }
/// <summary> /// 归还池对象 /// </summary> /// <param name="ObjName">对象的名称或者类型</param> /// <param name="Obj">对象</param> /// <param name="BackFunc">返回处理函数</param> public void BackObj(U ObjName, T Obj, PoolObjBackFunc <T> BackFunc = null) { lock (m_Lock) { Stack <T> stack = null; if (!m_DloopDic.TryGetValue(ObjName, out stack)) { stack = new Stack <T>(m_DefaultSize); m_DloopDic.Add(ObjName, stack); } if (!stack.Contains(Obj)) { stack.Push(Obj); } else { UnityEngine.Debug.Log("返回一个已经在池里的对象" + new StackTrace().GetFrames().ToString()); } if (BackFunc != null) { BackFunc(Obj); } } }