unity手写对象池
时间: 2024-11-01 16:01:52 浏览: 11
Unity中的对象池是一种设计模式,用于管理游戏中的短期生命周期对象,比如游戏中频繁创建和销毁的敌对单位、粒子效果、动态障碍物等。对象池的主要目的是提高性能,减少垃圾回收压力,并避免不必要的创建和销毁操作。
以下是手写Unity对象池的基本步骤:
1. 创建一个静态池类:作为所有对象的公共仓库,包含一个列表用于存储可用的对象。
```csharp
public class ObjectPool<T> where T : UnityEngine.Object {
private List<T> availableObjects;
private const int capacity = 10; // 池的容量
public ObjectPool() {
availableObjects = new List<T>(capacity);
for (int i = 0; i < capacity; i++) {
var obj = Instantiate<T>();
availableObjects.Add(obj);
DisableObject(obj); // 初始化时先禁用对象
}
}
public TGetObject() {
if (availableObjects.Count > 0) {
var obj = availableObjects[0];
availableObjects.RemoveAt(0);
EnableObject(obj);
return obj;
} else {
return Instantiate<T>(); // 如果没有可用对象,就直接新创建一个
}
}
public void ReturnObject(T obj) {
DisableObject(obj);
availableObjects.Add(obj);
}
private void DisableObject(T obj) => obj.SetActive(false);
private void EnableObject(T obj) => obj.SetActive(true);
}
```
阅读全文