49 lines
1.0 KiB
C#
49 lines
1.0 KiB
C#
|
|
#if UNITY_EDITOR
|
|
|
|
using System.Collections.Generic;
|
|
|
|
namespace UguiToolkit.Editor
|
|
{
|
|
public class ObjectPool<T> where T : new()
|
|
{
|
|
public int initialSize = 10; // 初始大小
|
|
private Queue<T> pool;
|
|
|
|
public ObjectPool(int initialSize)
|
|
{
|
|
this.initialSize = initialSize;
|
|
this.pool = new Queue<T>(initialSize);
|
|
// 预先创建一些对象
|
|
for (int i = 0; i < initialSize; i++)
|
|
{
|
|
T obj = new T();
|
|
pool.Enqueue(obj);
|
|
}
|
|
}
|
|
|
|
// 获取对象
|
|
public T GetObject()
|
|
{
|
|
if (pool.Count > 0)
|
|
{
|
|
T obj = pool.Dequeue();
|
|
return obj;
|
|
}
|
|
else
|
|
{
|
|
// 如果池中没有可用对象,则创建新的对象
|
|
T obj = new T();
|
|
return obj;
|
|
}
|
|
}
|
|
|
|
// 释放对象
|
|
public void ReturnObject(T obj)
|
|
{
|
|
pool.Enqueue(obj);
|
|
}
|
|
}
|
|
}
|
|
|
|
#endif |