Options
All
  • Public
  • Public/Protected
  • All
Menu

Class NodePool

NodePool is the cache pool designed for node type.
It can helps you to improve your game performance for objects which need frequent release and recreate operations

It's recommended to create NodePool instances by node type, the type corresponds to node type in game design, not the class, for example, a prefab is a specific node type.
When you create a node pool, you can pass a Component which contains unuse, reuse functions to control the content of node.

Some common use case is :
1. Bullets in game (die very soon, massive creation and recreation, no side effect on other objects)
2. Blocks in candy crash (massive creation and recreation)
etc...

Hierarchy

  • NodePool

Index

Constructors

Properties

Methods

Constructors

constructor

  • en

    Constructor for creating a pool for a specific node template (usually a prefab). You can pass a component (type or name) argument for handling event for reusing and recycling node.

    zh

    使用构造函数来创建一个节点专用的对象池,您可以传递一个组件类型或名称,用于处理节点回收和复用时的事件逻辑。

    example

    import { NodePool, Prefab } from 'cc'; properties: { template: Prefab }, onLoad () { // MyTemplateHandler is a component with 'unuse' and 'reuse' to handle events when node is reused or recycled. this.myPool = new NodePool('MyTemplateHandler'); } }

    Parameters

    • Optional poolHandlerComp: Constructor<IPoolHandlerComponent> | string

      @en The constructor or the class name of the component to control the unuse/reuse logic. @zh 处理节点回收和复用事件逻辑的组件类型或名称。

    Returns NodePool

Properties

Private _pool

_pool: Node[]

Optional poolHandlerComp

poolHandlerComp: Constructor<IPoolHandlerComponent> | string

The pool handler component, it could be the class name or the constructor.

Methods

clear

  • clear(): void

get

  • get(...args: any[]): Node | null
  • Get a obj from pool, if no available object in pool, null will be returned. This function will invoke the reuse function of poolHandlerComp if exist.

    example

    let newNode = this.myPool.get();

    Parameters

    • Rest ...args: any[]

      向 poolHandlerComp 中的 'reuse' 函数传递的参数

    Returns Node | null

put

  • put(obj: Node): void
  • Put a new Node into the pool. It will automatically remove the node from its parent without cleanup. It will also invoke unuse method of the poolHandlerComp if exist.

    example

    import { instantiate } from 'cc'; const myNode = instantiate(this.template); this.myPool.put(myNode);

    Parameters

    Returns void

size

  • size(): number

Generated using TypeDoc