Пример #1
0
        /// <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);
            }
        }
Пример #2
0
 /// <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);
         }
     }
 }