使用指南
对象池节点
对象池 节点手册,包含 5 个节点的用途、引脚、使用场景和注意事项。
16
学习目标
复用频繁创建销毁的节点或对象,降低游戏运行时的创建成本。
覆盖范围
- 节点数量:5
- 分类路径:对象池
典型使用场景
- 子弹、特效、伤害数字、掉落物复用
- 关卡中批量生成和回收对象
- 减少移动平台上的卡顿
通用注意事项
- 回收对象前要重置位置、状态和事件绑定。
- 取出对象后要确认它已经从池中正确激活。
节点索引
| 节点 | 节点 ID | 输入/输出 | 执行方式 |
|---|---|---|---|
| 创建对象池 | nodePoolCreate | 2 / 2 | 立即继续 |
| 对象池数量 | nodePoolSize | 1 / 1 | 立即继续 |
| 放回节点 | nodePoolPut | 3 / 2 | 立即继续 |
| 清空对象池 | nodePoolClear | 2 / 2 | 立即继续 |
| 取出节点 | nodePoolGet | 2 / 4 | 立即继续 |
创建对象池
创建对象池:新建一个专门缓存节点的对象池,适合子弹、爆炸特效、掉落物、飘字等会被反复生成和回收的内容。 通常做法是先在加载事件或启动事件里创建一次,再把对象池保存到变量,后续配合“取出节点”和“放回节点”反复使用。 如果这类节点在回收前后还需要额外处理,可以选择一个处理器组件类型;留空时使用默认回收方式。
节点信息
| 字段 | 值 |
|---|---|
| 节点 ID | nodePoolCreate |
| 分类 | 对象池 |
| 二级分类 | - |
| 分组 | - |
| 是否需要等待结果 | 否 |
| 是否需要先选择目标 | 否 |
输入引脚
| 引脚 ID | 名称 | 连接方式 | 值类型 | 用途 | 默认或选择 | 连接要求 |
|---|---|---|---|---|---|---|
exe | - | 执行流 | 执行流 | 执行入口 触发当前对象池操作。 | - | 可选 |
poolHandlerComp | 处理器组件 | 数据 | cc.Component / Component | 可选处理器组件 选择负责“放回后收尾”和“再次取出前准备”的组件类型。留空时保持默认回收方式。 | 可编辑控件 默认值:"" 可从项目内容中选择 | 可选 |
输出引脚
| 引脚 ID | 名称 | 连接方式 | 值类型 | 用途 | 默认或选择 | 连接要求 |
|---|---|---|---|---|---|---|
out | 继续 | 执行流 | 执行流 | 执行出口 当前对象池操作完成后继续执行后续节点。 | - | 可选 |
pool | 对象池 | 数据 | reference / NodePool | 对象池 把当前对象池继续传给后续节点,方便连续执行取出、放回或清空等操作。 | - | 可选 |
使用场景
- 子弹、特效、伤害数字、掉落物复用
- 关卡中批量生成和回收对象
- 减少移动平台上的卡顿
注意事项
- 适合的工作流类型:component、library、method、function、class。
- 回收对象前要重置位置、状态和事件绑定。
- 取出对象后要确认它已经从池中正确激活。
对象池数量
对象池数量:读取当前池里还剩多少个可直接复用的节点。 适合在生成前判断库存是否充足,或在调试时观察对象池是否按预期回收。
节点信息
| 字段 | 值 |
|---|---|
| 节点 ID | nodePoolSize |
| 分类 | 对象池 |
| 二级分类 | - |
| 分组 | - |
| 是否需要等待结果 | 否 |
| 是否需要先选择目标 | 否 |
输入引脚
| 引脚 ID | 名称 | 连接方式 | 值类型 | 用途 | 默认或选择 | 连接要求 |
|---|---|---|---|---|---|---|
pool | 对象池 | 数据 | reference / NodePool | 对象池 连接已经创建好的对象池。通常会先在初始化阶段创建,再保存到变量里重复使用。 | - | 必填 |
输出引脚
| 引脚 ID | 名称 | 连接方式 | 值类型 | 用途 | 默认或选择 | 连接要求 |
|---|---|---|---|---|---|---|
size | 可用数量 | 数据 | number | 当前可复用节点数量 返回对象池里现在还剩多少个可直接取出的节点。 | - | 可选 |
使用场景
- 子弹、特效、伤害数字、掉落物复用
- 关卡中批量生成和回收对象
- 减少移动平台上的卡顿
注意事项
- 适合的工作流类型:component、library、method、function、class。
- 回收对象前要重置位置、状态和事件绑定。
- 取出对象后要确认它已经从池中正确激活。
放回节点
放回节点:把暂时不用的节点回收到对象池,方便后续再次取出复用。 适合子弹命中后回收、一次性特效播放完后回收、伤害数字消失后回收等场景。 执行时会自动把节点从父节点移除,所以放回前不需要再手动把它从场景树上摘下来。
节点信息
| 字段 | 值 |
|---|---|
| 节点 ID | nodePoolPut |
| 分类 | 对象池 |
| 二级分类 | - |
| 分组 | - |
| 是否需要等待结果 | 否 |
| 是否需要先选择目标 | 否 |
输入引脚
| 引脚 ID | 名称 | 连接方式 | 值类型 | 用途 | 默认或选择 | 连接要求 |
|---|---|---|---|---|---|---|
exe | - | 执行流 | 执行流 | 执行入口 触发当前对象池操作。 | - | 可选 |
pool | 对象池 | 数据 | reference / NodePool | 对象池 连接已经创建好的对象池。通常会先在初始化阶段创建,再保存到变量里重复使用。 | - | 必填 |
node | 节点 | 数据 | cc.Node | 待回收节点 要放回对象池的节点。执行时会自动把它从父节点移除。 | - | 必填 |
输出引脚
| 引脚 ID | 名称 | 连接方式 | 值类型 | 用途 | 默认或选择 | 连接要求 |
|---|---|---|---|---|---|---|
out | 继续 | 执行流 | 执行流 | 执行出口 当前对象池操作完成后继续执行后续节点。 | - | 可选 |
pool | 对象池 | 数据 | reference / NodePool | 对象池 把当前对象池继续传给后续节点,方便连续执行取出、放回或清空等操作。 | - | 可选 |
使用场景
- 子弹、特效、伤害数字、掉落物复用
- 关卡中批量生成和回收对象
- 减少移动平台上的卡顿
注意事项
- 适合的工作流类型:component、library、method、function、class。
- 回收对象前要重置位置、状态和事件绑定。
- 取出对象后要确认它已经从池中正确激活。
清空对象池
清空对象池:销毁当前池里已经缓存、但暂时没有在场景中使用的全部节点。 适合在切换场景、重开关卡或彻底关闭某套玩法时释放缓存。 它只会清理池中尚未取出的缓存节点,不会影响已经在场景里正常使用的节点。
节点信息
| 字段 | 值 |
|---|---|
| 节点 ID | nodePoolClear |
| 分类 | 对象池 |
| 二级分类 | - |
| 分组 | - |
| 是否需要等待结果 | 否 |
| 是否需要先选择目标 | 否 |
输入引脚
| 引脚 ID | 名称 | 连接方式 | 值类型 | 用途 | 默认或选择 | 连接要求 |
|---|---|---|---|---|---|---|
exe | - | 执行流 | 执行流 | 执行入口 触发当前对象池操作。 | - | 可选 |
pool | 对象池 | 数据 | reference / NodePool | 对象池 连接已经创建好的对象池。通常会先在初始化阶段创建,再保存到变量里重复使用。 | - | 必填 |
输出引脚
| 引脚 ID | 名称 | 连接方式 | 值类型 | 用途 | 默认或选择 | 连接要求 |
|---|---|---|---|---|---|---|
out | 继续 | 执行流 | 执行流 | 执行出口 当前对象池操作完成后继续执行后续节点。 | - | 可选 |
pool | 对象池 | 数据 | reference / NodePool | 对象池 把当前对象池继续传给后续节点,方便连续执行取出、放回或清空等操作。 | - | 可选 |
使用场景
- 子弹、特效、伤害数字、掉落物复用
- 关卡中批量生成和回收对象
- 减少移动平台上的卡顿
注意事项
- 适合的工作流类型:component、library、method、function、class。
- 回收对象前要重置位置、状态和事件绑定。
- 取出对象后要确认它已经从池中正确激活。
取出节点
取出节点:尝试从对象池拿出一个已经缓存好的节点,常用于发射子弹、生成特效、刷出敌人等需要快速复用对象的场景。 如果对象池里还有可用节点,节点输出会返回该节点,取出成功输出为 true。 如果池为空,节点输出为 null,取出成功输出为 false。这时可以改走“新建节点”或“稍后再试”的逻辑。
节点信息
| 字段 | 值 |
|---|---|
| 节点 ID | nodePoolGet |
| 分类 | 对象池 |
| 二级分类 | - |
| 分组 | - |
| 是否需要等待结果 | 否 |
| 是否需要先选择目标 | 否 |
输入引脚
| 引脚 ID | 名称 | 连接方式 | 值类型 | 用途 | 默认或选择 | 连接要求 |
|---|---|---|---|---|---|---|
exe | - | 执行流 | 执行流 | 执行入口 触发当前对象池操作。 | - | 可选 |
pool | 对象池 | 数据 | reference / NodePool | 对象池 连接已经创建好的对象池。通常会先在初始化阶段创建,再保存到变量里重复使用。 | - | 必填 |
输出引脚
| 引脚 ID | 名称 | 连接方式 | 值类型 | 用途 | 默认或选择 | 连接要求 |
|---|---|---|---|---|---|---|
out | 继续 | 执行流 | 执行流 | 执行出口 当前对象池操作完成后继续执行后续节点。 | - | 可选 |
pool | 对象池 | 数据 | reference / NodePool | 对象池 把当前对象池继续传给后续节点,方便连续执行取出、放回或清空等操作。 | - | 可选 |
node | 节点 | 数据 | cc.Node | 取出的节点 对象池里有可复用节点时返回该节点;池为空时返回 null。 | - | 可选 |
hasNode | 取出成功 | 数据 | boolean | 对象池是否取到节点 true 表示这次成功取出一个节点;false 表示池为空。 | - | 可选 |
使用场景
- 子弹、特效、伤害数字、掉落物复用
- 关卡中批量生成和回收对象
- 减少移动平台上的卡顿
注意事项
- 适合的工作流类型:component、library、method、function、class。
- 回收对象前要重置位置、状态和事件绑定。
- 取出对象后要确认它已经从池中正确激活。