CocosCreator中,使用对象池(NodePool)

使用示例

如有一个预制体fish,其上有一组件MyFish,MyFish有初始化方法init()和销毁方法myDestroy()。
游戏中需管理一组MyFish,大量地创建和销毁。

在管理类(如FishGroup)中,
定义字段

@property({ type: Prefab, visible: true })
private _myFishPrefab: Prefab;
private _fishPool: NodePool;

初始化时

public init():void
{
    ……
    this._fishPool = new NodePool();
    ……
}

销毁时

public myDestroy(): void 
{
    ……
    this._fishPool.clear();
    this._fishPool = null;
    ……
}

提供一个方法用于创建Fish

private createFish(): MyFish
{ 
    let fishNode = this._fishPool.get();
    if (!fishNode)
    {
        fishNode = instantiate(this._myFishPrefab);
    }

    return fishNode.getComponent(MyFish);
}

提供一个方法用于销毁Fish

private destroyFish(fish:MyFish):void
{
    this._fishPool.put(this._fishes[i].myFish.node);
}

你可能感兴趣的:(CocosCreator中,使用对象池(NodePool))