Unity对象池
对象池,每次都会调用第一个没有被隐藏的对象。
using System.Collections.Generic;
using UnityEngine;
public class ObjectPool<T> where T : Component
{
private Queue<T> objectQueue;//没有被使用的对象的队列
private HashSet<T> activeObjects;//已经激活对象的队列
private T prefab;//对象的预制体
private int poolSize;//对象池的大小
private int initialPoolSize;//对象池初始大小
//创建对象池,对象的预制体,对象池的初始大小
public ObjectPool(T prefab, int poolSize)
{
this.prefab = prefab;
this.poolSize = poolSize;
this.initialPoolSize = poolSize;
objectQueue = new Queue<T>();
activeObjects = new HashSet<T>();
for (int i = 0; i < poolSize; i++)
{
T obj = GameObject.Instantiate(prefab);
obj.gameObject.SetActive(false);
objectQueue.Enqueue(obj);
}
}
//获取对象池中的物体,默认是会获取第一个物体,
public T GetObject()
{
if (objectQueue.Count == 0)
{

最低0.47元/天 解锁文章
3442

被折叠的 条评论
为什么被折叠?



