在unity的2021版本后,Unity引入了对象池,从这以后就可以用Unity内置的对象池,这次我们就来演示一下Unity内置的对象池。 创建对象池基类 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Pool; public class Basepool<T> : MonoBehaviour where T : Component { [Se...
对象池中包含若干提前准备好的若干实例,当需要时从对象池中提取,当不需要时,则重新放入对象池。 一方面,使用对象池不需要频繁的产生和销毁实例对象,另一方面,对象池中的实例如果不够程序调用才会继续产生实例,这大大节省了性能。 从Unity2021开始,引入了UnityEngine.Pool,这里我们简单介绍下Unity内置的对象池。 Unity...
而且对象池根本不需要set parent。这只是为了管理清晰。最重要的是pool本质是一个的字典。 下面是unity自己写的对象池的用法: 上面是实现pool所要写的,相当于一种模板模式。规定好了函数要外部实现即可。 pool实现好了后供外部使用的方法: 其中如果obj自己想使用这里面的方法,那就要在自己内部声明一个pool对象。这...
privatereadonlyAction<T>m_ActionOnRelease;// 销毁对象时调用的动作。privatereadonlyAction<T>m_ActionOnDestroy;// 池中对象的最大数量。privatereadonlyintm_MaxSize;// 是否检查对象是否已经被释放。internalboolm_CollectionCheck;// 获取当前池中所有对象的数量。publicintCountAll{get;privateset;}// 获取...
UnityCsReference 链接:https://github.com/Unity-Technologies/UnityCsReference/tree/master/Runtime/Export/ObjectPool 文件:UnityCsReference-master/Modules/UIElements/Core/ObjectPool.cs 其他 文件:UnityCsReference-master/Modules/UIElements/Core/ObjectPool.cs ...
下面是unity自己写的对象池的用法: 上面是实现pool所要写的,相当于一种模板模式。规定好了函数要外部实现即可。 pool实现好了后供外部使用的方法: 其中如果obj自己想使用这里面的方法,那就要在自己内部声明一个pool对象。这有点像子类沙箱。虽然obj不是pool的子类,但是这种情况,不是说必须是is a的关系才会常有。