#if UNITY_EDITOR using System.Collections.Generic; namespace UguiToolkit.Editor { public class ObjectPool where T : new() { public int initialSize = 10; // 初始大小 private Queue pool; public ObjectPool(int initialSize) { this.initialSize = initialSize; this.pool = new Queue(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