编写一个Unity对象池
时间: 2023-06-01 16:03:35 浏览: 71
当然可以!Unity对象池是一种优化技术,用于重复使用多个游戏对象而不是频繁地创建和销毁它们。这样可以减少内存开销,提高性能。
这是一个简单的对象池的示例实现:
```
using System.Collections.Generic;
using UnityEngine;
public class ObjectPool<T> where T : Component
{
private readonly Stack<T> m_Stack = new Stack<T>();
private readonly T m_Prefab;
public ObjectPool(T prefab)
{
m_Prefab = prefab;
}
public T Get()
{
if (m_Stack.Count > 0)
{
return m_Stack.Pop();
}
return Object.Instantiate(m_Prefab);
}
public void Release(T element)
{
element.gameObject.SetActive(false);
m_Stack.Push(element);
}
}
```
使用方法:
```
ObjectPool<GameObject> pool = new ObjectPool<GameObject>(prefab);
// 从对象池中获取一个对象
GameObject obj = pool.Get();
// 将对象返回到对象池中
pool.Release(obj);
```
这是一个简单的实现,你可以根据需要添加更多的功能,例如设置最大对象数量,自动扩展对象池等。
相关推荐
![unitypackage](https://img-home.csdnimg.cn/images/20210720083646.png)
![unitypackage](https://img-home.csdnimg.cn/images/20210720083646.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)