赞
踩
由于总控制脚本Game管理所有脚本时,每一次都要手动添加控制的节点,比较麻烦。
为了解决以上问题,在Game脚本中写一个函数setConfigTs来实现自动添加。
只要是继承于脚本基类的脚本所挂的节点,都会被自动添加到Game里,由总控制脚本Game来控制。
import ConfigMgr from './ConfigMgr'; import ScriptBase from './ScriptBase' const {ccclass, property} = cc._decorator; @ccclass export default class Game extends cc.Component { //设为私有,在编辑器上不可被编辑,外部访问不到 private arrConfigTs:ScriptBase[]=[]; //这个数组里面存储的是 Game节点属性检查器里面拖过去的节点 的脚本。 onLoad () { //从Game开始往下找每个节点 this.setConfigTs(this.node); } setConfigTs(parentNode:cc.Node){ //遍历Game底下所有孩子child let children = parentNode.children; for(let child of children){ //再判断child是否有孩子 if(child.children.length !==0){ //递归(深拷贝) 一层一层地找 this.setConfigTs(child); } //开始存储 //判断当前找到的这个节点是否挂了 脚本基类类型(派生类)的脚本 let childTs = child.getComponent(ScriptBase); //若脚本存在,存储到数组里面 if(childTs){ this.arrConfigTs.push(childTs); } } } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。