用unity写一个对象池
时间: 2023-05-19 10:03:46 浏览: 67
好的,以下是一个简单的 Unity 对象池的示例代码:
public class ObjectPool : MonoBehaviour
{
public GameObject prefab;
public int poolSize = 10;
private List<GameObject> pool = new List<GameObject>();
private void Start()
{
for (int i = 0; i < poolSize; i++)
{
GameObject obj = Instantiate(prefab);
obj.SetActive(false);
pool.Add(obj);
}
}
public GameObject GetObject()
{
foreach (GameObject obj in pool)
{
if (!obj.activeInHierarchy)
{
obj.SetActive(true);
return obj;
}
}
GameObject newObj = Instantiate(prefab);
pool.Add(newObj);
return newObj;
}
public void ReturnObject(GameObject obj)
{
obj.SetActive(false);
}
}
你可以将这个脚本附加到一个空 GameObject 上,然后将需要使用对象池的预制体赋值给 prefab 变量。在需要使用对象池的地方,可以通过调用 GetObject() 方法来获取一个未被使用的对象,使用完毕后再通过调用 ReturnObject() 方法将对象归还给对象池。