不好意思,之前写过7年的端/手游,写游戏的干哪些事情我还是知道一些。
一、这个并不是官方强制要求或者倡导这样做,这只是我个人的建议。
楼主的方法也不是不能解决问题,只是我凭着个人的习惯以及之前工作的游戏开发经验让我觉得这样做不太好。你完全可以按照自己的想法去实现。
如果你觉得这样做你方便维护,对你来说有好处,那就这样做。毕竟好游戏也不是好代码决定的(
,看看太吾绘卷)
我也是看这个帖子一直没人回复,所以分享一下自己的思路以及做法。可能会有其他大佬有不同的做法,更好的做法,但是不分享出来,对楼主没有任何帮助。
二、对于好不好维护,我的看法是,虽然都写在一个脚本里面也可以,但有可能回带来整个脚本变得复杂,复杂的代码在后期的功能删减修改上,经常会无意识的或者不经意间一点点的增加代码的耦合度。导致后期bug难查,功能难以复用,扩展性也变差,如果有相似功能的需求,就容易变成代码的Ctrl+C和Ctrl+V。
将代码进行拆分,一个是遵循面向对象思想中的单一职责原则,另一方面也是想尽量使用组合去完成功能。从而代码的复用性增强,清晰干净,为后期扩展留有余地。比如后期如果有新的活动,要做新的界面和功能,很多东西都可以复用,而且这些事情交给策划就可以,如果界面的拼接,选择什么样的弹出效果,使用哪套字体和数字等等,程序只需要提供一个规则的算法就可以。
我并不是一定要你每个ui都挂一个脚本,你也完全可以将这些设置字体、大小、位置等等的代码放在界面父节点的里面。我个人推荐是复杂的字节点抽成模块,单一简单的字节点没必要挂脚本,父节点脚本中处理就行。
你完全可以在父节点中写一个方法或者利用notify来做这些事情,然后使用时通过类似这样的代码去让ui界面显示,同时更换选中状态
properties: {
selectedIndex : {
default : 0,
notify () {
this.node.children[this.selectedIndex].check();
}
}
},
//使用时
parentNode.active = true;
parentNode. selectedIndex = 1;
或者
init (style) {
if (style.fnt !== undefined) {
this._mylabel.font = style.fnt;
}
if (style.selectedIndex !== undefined) {
this._myToggleContainer.children[style.selectedIndex].check();
}
...
}
//使用时
parentNode.active = true;
parentNode.init({selectedIndex : 1});
另外并不是不建议去修改onEnable,只是目前你的这个方案,如果放在onEnable里面,很容易写死,而且如果某两个component的onEnable中还有交互,还要去注意各个component组件的enable时序。越到后面头越疼