com.soviby.unity.ui.ugui-to.../Assets/Editor/Helper/ObjectPool.cs
2024-12-10 18:14:38 +08:00

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