Unity---ObjectPooL(对象池)简单应用与理解 例子 对象池是什么,我们可以把他理解为一个存放物品的柜子,就比如商城的共享充电宝,当我们需要用的时候把它拿出来,当我们用完时把它放回去。这样可以节省内存。平常我们在Unity生成物体时用的方法Instantiate()生成一个新的物体,当它结束它的使命时我们便使用Destroy()方法...
框架中将对象池划分为两种,一种是通过new运算符创建对象的对象池,另一种是对象类继承自MonoBehaviour,需要自定义创建方法的对象池,我们将它们分别称为ObjectPool、MonoObjectPool。 为需要实现对象池管理的对象类继承IPoolable接口,接口中包含bool类型字段IsRecycled,用于标记该对象是否已经回收,以及OnRecycled方法,用于实现...
ObjectPoolManager.Instance.RemoveGameObject(PoolName, gameObject); } } ObjcetPoolManager 用来管理多个对象池 public class ObjectPoolManager : Singleton<ObjectPoolManager> { private Dictionary<string, ObjectPool> m_PoolDic; private Transform m_RootPoolTrans; public ObjectPoolManager() { m_PoolDic = new ...
private static MyObjectPool _instance;//创建一个单例模式 public static MyObjectPool Instance { get { return _instance; } } void Start() { _instance = this; } 1. 2. 3. 4. 5. 6. 7. 8. 9. 声明两个字典类型的集合: //用于存储需要实例化的对象,以及实例化后对象的集合 Dictionary<GameO...
public ObjectPool Pool { get; set; } // 场景中某个具体的池(不可序列化) [System.NonSerialized] private ObjectPool poolInstanceForPrefab; /// <summary> /// 回收对象到对象池中 /// </summary> public void ReturnToPool() { if (Pool) ...
siki学院官网:https://www.sikiedu.com/, 视频播放量 4332、弹幕量 82、点赞数 89、投硬币枚数 30、收藏人数 342、转发人数 14, 视频作者 Unity-siki学院, 作者简介 持续更新Unity课程相关视频。深入学习,获取更多资料,请访问我们官网https://www.sikiedu.com/ ,相关视
ObjectPool是对象池基类,它是抽象类,包含了通用的成员和方法。作为一个基类,它提可被子类继承的方法是virtual的,便于实现多态。 CubePool, SpharePool是具体的对象池实现类,继承自ObjectPool,可以override基类的alloc和recycle等方法实现个性化的操作。 PrefabInfo挂在对象池中的每一个对象上,用来记录对象类型等信息。
创建管理所有类型池的ObjectPool。 一些对象池类库管理了太多种类的可怕的资源(如内存,数据库连接,游戏对象,外部资产等)。这无疑增加了对象池的代码复杂度。 某些类型的资源是很珍贵的(如数据库连接),池需要显示上限并提供一个针对分配对象失败的安全措施; ...
ObjectPool.cs 用于通过对象池 生成和回收 游戏对象 usingSystem.Collections.Generic; usingUnityEngine; namespaceUtilty { publicclassObjectPool:Singleton<ObjectPool> { //私有构造 privateObjectPool() { pool =newDictionary<string, List<GameObject>>(); ...
从Unity2021开始,引入了UnityEngine.Pool,这里我们简单介绍下Unity内置的对象池。 Unity对象池 下面这个是官方的对象池 using System; using System.Collections.Generic; namespace UnityEngine.Pool { // // 摘要: // A stack based Pool.IObjectPool_1. public class ObjectPool<T> : IDisposable, IObjectPoo...