コード例 #1
0
ファイル: GameObjectPool.cs プロジェクト: kuxingseng/Hospital
 /// <summary>
 /// 清理所有缓存的对象。
 /// </summary>
 public void Clear()
 {
     while (AvailiableObjects.Count > 0)
     {
         UnityEngine.Object.Destroy(AvailiableObjects.Dequeue());
     }
     while (InUseObjects.Count > 0)
     {
         UnityEngine.Object.Destroy(InUseObjects.Dequeue());
     }
 }
コード例 #2
0
ファイル: ObjectPool.cs プロジェクト: kuxingseng/Hospital
        /// <summary>
        /// 从对象池中获取一个对象。
        /// </summary>
        /// <returns>可用的对象</returns>
        public T Get()
        {
            T ret;

            if (AvailiableObjects.Count != 0)
            {
                ret = AvailiableObjects.Dequeue();
            }
            else if (InUseObjects.Count == Capacity)
            {
                ret = InUseObjects.Dequeue();
                OnPut(ret);
            }
            else
            {
                ret = Create();
            }
            OnGet(ret);
            InUseObjects.Enqueue(ret);
            return(ret);
        }