最近在重构TabCtrl的代码,必然要用到cc.ToggleGroup或者cc.ToggleContainer.
但貌似cc.ToggleGroup要废弃了,推荐用cc.ToggleContainer(当然目前前者还能用,但因为前者的OnEnable和OnDisable有时候没匹配,当前者的node隐藏显示时可能会出问题,所以改用后者;当然这个问题好像是通病,这个问题没有去深究,因为有这个问题依然还能活下去。).
之前cc.ToggleGroup的用法是将cc.Toggle的toggleGroup设置一遍,这样就都属于一个group管理了。
现在用cc.ToggleContainer的话,该怎么用呢?

通过Toggle的这个_toggleContainer的get可以发现,我们发现container必须是所有toggle的父亲的组件,所以我们只能将toggle放到container下一层。。
但是我的需求是不在同一层,所以想改这个值,然后:
这个值既没有setter,也无法二次配置。。
难道就只有改引擎js代码了?改是无所谓,只不过引擎升级又要合并,维护成本高。。
然后又看了下toggle的代码:
发现toggle的逻辑代码都只是在toggleGroup后面加了个|| _toggleContainer,他们的方法差不多一样,所以直接用toggleGroup算了。。
就直接把cc.ToggleContainer赋给Toggle的toggleGroup了,然后适配一下:
这样ToggleContainer就支持toggle和container不是父子层级的情况了。。
发这个贴呢,只是想说想弄好这个简单的需求,却需要死掉这么多脑细胞。。希望引擎组的大佬们偶尔也能从用户需求、可维护性的角度去设计接口,不要让用户只能去改引擎代码(这样用户就更容易只停留在那一个版本了,因为升级合并代码的成本高)。。
ps:水平有限,理解有误或需要提高的地方,望指正。。
希望creator越来越好!

