你可以尝试向node发消息,在component中监听处理,这样就不会有你说的硬编码了
不过你需要先把prefab节点给addChild,不然无机会监听节点事件
cc.Class({
...
onLoad() {
this.node.on('init', (event) => this.init(event.detail) );
}
})
--------------------------------------
var node = cc.instantiate(prefab);
this.node.addChild(node);
node.emit('init', xxx) //不会再有你的硬编码了
这样能解决你的问题了吗?
如果你想再懒一点,给node做一个init函数
cc.Node.prototype.init = function(xxx) {
this.emit('init', xxx);
}
var node = cc.instantiate(prefab);
this.node.addChild(node);
node.init();