Untiy PoolManager随手记

用法,1是获取,2是清除,
问题是这个池到底能做什么用
首先用这个池生成的对象是在池节点下使用,而不是取出来用(可以取出来用,直接transform.parent赋值就可以)

疑问,池里面的节点时什么时候被隐藏的

Despawn时被隐藏的


补充说明:池中有spawn列表和despawn列表,在生成和回炉的操作时会进入对应的列表,如果两个列表数据量的和大于最大数值,回炉时就会销毁数据对象

spawn取出的对象可以绑的任何节点之下,使用despawn回收时这个对象节点绑定不需要变化,仅仅只是被池隐藏掉了



---------------------------------------------------
Demo分析
Example Scene场景分析


发现池以外的类为
ExampleObjects节点下的
Spawner节点上的SimpleSpawner
Creator节点上的CreationExample
---------------------------------------------------


SimpleSpawner类分析
目的应该是演示静态创建的池的使用
里面包含两个池,普通图形shape prefab池,例子prefab池
具体就是创建spawn然后再删除despawn


CreationExample类分析
1 目的应该是演示一个动态创建的池(池的名称是Creator),并且动态设置池的属性
这里设置的属性主要是清理条件很重要,比如prefabPool.preloadAmount = 5;
只保留5个,这个参数导致生成球最多只有5个,超过5个就会清除


2 在Start中还有个例子,从池中取出一个空闲对象,并填充的操作






---------------------------------------------------
PoolManager有3个基本类分析
SpawnPool 对象池


PoolManager 对象池管理器


PreRuntimePoolItem 存入池的item(这里能设置PoolName和PrefabName)
作用应该是OnStart时自动进入相应名字的池
另外有两个参数需要注意(实际作用未知)
DespawnOnStart 不会在OnStart时被自动设置为inactive
Do Not Reparent 是否把节点加入对象池的子节点


SpawnPool (只写几个需要注意的位置)
Awake时会调用PoolManager.Pools.Add(this);把自己加入PoolManager中
包含4种Transform,AudioSource,ParticleSystem,ParticleEmitter


SpawnPool里面还有一层PrefabPool,一个SpawnPool内部包含一组PrefabPool
具体创建池时是先创建PrefabPool,然后加入SpawnPool中
静态创建看SpawnPool.Awake
动态创建看CreationExample.Start
---------------------------------------------------
原文地址:https://www.cnblogs.com/nafio/p/9137406.html