美文网首页
CocosCreator中,使用对象池(NodePool)

CocosCreator中,使用对象池(NodePool)

作者: 全新的饭 | 来源:发表于2022-12-08 16:42 被阅读0次

    使用示例

    如有一个预制体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)

          本文链接:https://www.haomeiwen.com/subject/upjafdtx.html