各位大神帮忙看看nodepool使用的报错

//加载时:初始化对象池,根据enemyG的成员数量,生成对应的对象池
onLoad:function(){
this.CreatePool(); },

CreatePool:function(){
for(var i=0;i<this.enemyG.length;i++){
var enemyN=this.enemyG[i];
this.PutPool(enemyN);//循环执行填充对象池
}
},
PutPool:function(enemyN){ //在创建对象池,并在对象池内填充指定数量成员
var name=enemyN.name;
this[name]=new cc.NodePool();//
let initpoolcount=enemyN.poolcount;
for(var ii=0;ii<initpoolcount;ii++){
let Poolnode=cc.instantiate(enemyN.prefab);
this[name].put(Poolnode);
console.log(‘填充对象’);
}
},
gameStart:function(){
for(var ei=0;ei<this.enemyG.length;ei++){
var freqTime=this.enemyG[ei].freqTime;
var enemyN=this.enemyG[ei];
this.schedule(this.getNewEnemy(enemyN)
.bind(this),freqTime);
}
console.log(‘游戏开始’);
},
//从对象池中取出对象,随机生成坐标,并插入场景;
getNewEnemy:function(enemyGinfo){
//从对象池中取对象
var name=enemyGinfo.name;
var newNode=this.getNode(enemyGinfo);//生成节点
//随机X,y坐标,设定对象的坐标
var randx=(Math.random()*-0.5)2(this.node.width/2-newNode.width/2);
var randy=this.node.height/2+newNode.height/2;
newNode.setposition(randx,randy);
},
//生成节点
getNode:function(enemyGinfo){
let newNode=null;
if(this[name].size()>0){
newNode=this[name].get();
}else{
newNode=cc.instantiate(prefab);
}
nodeParent.addChild(newNode);
return newNode;
},

报错提示:Cannot read property ‘size’ of undefined

问题描述:场景加载后对象池成功创建了,游戏开始时,生成节点报错了;提示size未定义,各位大佬帮我看看

觉得应该是我生成节点时,对对象池的引用有错,但是该怎么写,求大神帮帮忙


附上代码图

请确认gameStart是否先于onLoad执行了。

我的gameStart是在主场景main的onLoad的被执行的;

这个时候另外一个脚本的onLoad还没执行呢。

非常感谢;我试试改下

让另一个脚本先执行onload初始化,有什么好的办法吗

让这个脚本在层级上比其它脚本高。或者把onLoad里面的方法封装出来,在最先执行的脚本里面执行这个封装方法。

好的,谢谢

这个脚本层级已经最高了,还是同样的报错

那就不是,执行先后的问题了

getNode中 this[name].size() 改成this[enemyGinfo.name].size()

谢谢各位,问题解决了