接上次教程中的内容,讲到功能型组件与控制型组件,这里再简单回顾一下他们的要点:
核心:以装饰宿主节点为己任
具体要怎么去做呢?我下面整理了三个要点:
功能型组件一般会以纯脚本形式存在,如果做到了以上三点,我们编写的组件就可以像引擎内置的组件一样可以被随处使用了。甚至还可以跨越不同的项目,Shawn在CreatorPrimer配套代码仓库中的组件大多都是这类,供大家参考:https://github.com/ShawnZhang2015/CreatorPrimer.git
在实际项目中,不可避免的会存在有相互依赖的组件,建议将有相互依赖的组件代码,归类存放同一路径方便管理。
核心:管理和控制子孙节点
功能型组件用于解决功能点的问题,而不能解决业务、流程、相对复杂逻辑问题,这些问题的处理办法我们需要使用控制型组件来完成。
控制型组件的职责没有像功能型组件那么单纯,还需要从他们内和外两方面来进行说明。
对内要点
控制型组件对内它管理和控制子孙节点,这是划定了他的控制的范围,警惕越界。其次,控制型组件管理的手段是调用子孙节点上的组件方法或属性、监听子节点组件的事件,但尽量不参杂功能细节上的问题,这类问题由功能型组件完成。
内部安定好,我们看怎么面对外部,看下图:
站在更高的层次去看控制型组件,它也可以被上层控制组件所管理,从上层视角看控制型组件也是功能型组件,同样解决某个点上的问题,比如最常见的:cc.ScrollView。
控制型组件同样遵守部分功能型组件的一些规则:
以这种方式设计组件,尽可能为项目生产出一个个相对独立的模块,再用各个模块搭建完整的游戏。
本篇主要介绍了功能型组件与控制型组件的一点点心得,供大家参考,最为主要的还是对面向对象设计原则的应用。在此欢迎大家留言讨论,在组件开发中遇到的问题。下一次继续为大家分享,控制型组件与预制件编辑上的一些心得,欢迎关注。