unity对象池索引角色脚本
时间: 2023-07-31 21:11:06 浏览: 42
以下是一个简单的 Unity 对象池脚本示例,可以用于索引角色对象:
```csharp
using System.Collections.Generic;
using UnityEngine;
public class ObjectPool : MonoBehaviour
{
public GameObject prefab;
public int poolSize = 10;
private List<GameObject> objectPool = new List<GameObject>();
void Start()
{
// 创建对象池
for (int i = 0; i < poolSize; i++)
{
GameObject obj = Instantiate(prefab);
obj.SetActive(false);
objectPool.Add(obj);
}
}
public GameObject GetObject()
{
// 查找空闲对象
for (int i = 0; i < objectPool.Count; i++)
{
if (!objectPool[i].activeInHierarchy)
{
return objectPool[i];
}
}
// 如果没有空闲对象,则创建一个新的
GameObject newObj = Instantiate(prefab);
newObj.SetActive(false);
objectPool.Add(newObj);
return newObj;
}
public void ReleaseObject(GameObject obj)
{
// 将对象设置为非活跃状态
obj.SetActive(false);
}
}
```
你可以将这个脚本添加到一个空的 GameObject 上,然后将你的角色预制体作为 `prefab` 属性的值。在你的角色脚本中,你可以使用以下代码从对象池中获取角色对象:
```csharp
GameObject player = objectPool.GetObject();
player.transform.position = new Vector3(0, 0, 0);
player.SetActive(true);
```
当你不再需要这个角色对象时,你可以使用以下代码将它释放回对象池:
```csharp
objectPool.ReleaseObject(player);
```