版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq992817263/article/details/87191712
ReferencePool模块简介
ReferencePool是用于任意引用类型(除GameObject)的对象池,可以复用任意引用类型对象,以达到减少系统在频繁创建和删除对象时的开销。
使用ReferencePool
生成对象
不同于ObjectPool对象池,ReferencePool引用池不需要注册,任意引用类型只需要实现IReference接口,便可以直接通过引用池生成对象。
1.定义一个Test类并实现IReference接口:
public class Test : IReference
{
public int Value = 0;
public Test()
{
Value = 10;
}
/// <summary>
/// 当被引用池回收时重置数据
/// </summary>
public void Reset()
{
Value = 0;
}
}
2.生成对象:
//提取一个 Test 对象
Test t = Main.m_ReferencePool.Spawn<Test>();
回收对象
当对象不再使用时,回收对象也很简单:
//提取一个 Test 对象
Test t = Main.m_ReferencePool.Spawn<Test>();
//回收对象
Main.m_ReferencePool.Despawn(t);
设置对象池上限
选中主预制体下的ReferencePool对象,在ReferencePoolManager的属性面板,Limit为限制引用池中单个引用队列的上限,引用池中的对象超过此数值时将不再回收对象。
销毁对象池
销毁所有对象池以及其中包含的对象:
Main.m_ReferencePool.Clear();