• Cocos Creator 对象池cc.NodePool的使用


    对象池cc.NodePool
    把层级管理器中的节点拖进资源管理器中就创建了预制体;
    let和var 一样,是声明变量的关键词, 同一个变量名时,var 即使在{}内也作用全局,let有范围;
    (1)将需要数量的节点创建出来,并放进对象池:
    //...
    properties: {
    enemyPrefab: cc.Prefab
    },
    onLoad: function () {
    this.enemyPool = new cc.NodePool();
    let initCount = 5;
    for (let i = 0; i < initCount; ++i) {
    let enemy = cc.instantiate(this.enemyPrefab); // 创建节点
    this.enemyPool.put(enemy); // 通过 putInPool 接口放入对象池
    }
    }

    (2)获得对象池中储存的对象了:
    // ...
    createEnemy: function (parentNode) {
    let enemy = null;
    if (this.enemyPool.size() > 0) { // 通过 size 接口判断对象池中是否有空闲的对象
    enemy = this.enemyPool.get();

    else { // 如果没有空闲对象,就用 cc.instantiate 重新创建
    enemy = cc.instantiate(this.enemyPrefab);
    }
    enemy.parent = parentNode; // 将生成的敌人加入节点树
    enemy.getComponent('Enemy').init(); //接下来就可以调用 enemy 身上的脚本进行初始化
    }

    (3)节点退还给对象池,以备之后继续循环利用,:
    // ...
    onEnemyKilled: function (enemy) {
    this.enemyPool.put(enemy); // 将节点放进对象池,这个方法会同时调用节点的 removeFromParent();
    }

    myPool.clear(); // 调用这个方法就可以清空对象池

  • 相关阅读:
    浅析匿名内部类
    Neo4j学习实录 下载-安装-springboot操作neo4j
    Objective-C内存管理教程和原理剖析2
    Objective-C内存管理教程和原理剖析
    Objective-C语法快速参考
    Objective-C语法
    一点基础的东西:Objective-C的类型和常量
    IOS开发之----异常处理
    UITextField的详细使用
    TextField知多少
  • 原文地址:https://www.cnblogs.com/luorende/p/8284209.html
Copyright © 2020-2023  润新知