前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CreatorPrimer|组件编码心得(中)

CreatorPrimer|组件编码心得(中)

作者头像
张晓衡
发布2019-09-11 17:04:56
3620
发布2019-09-11 17:04:56
举报

接上次教程中的内容,讲到功能型组件与控制型组件,这里再简单回顾一下他们的要点:

  1. 功能型组件:以装饰宿主节点为己任,常用的有Sprite、Labe、Widget属于这类。
  2. 控制型组件:管理和控制子孙节点,比如:ScreollView、ToggleContainer,它们内部是由多个子孙点节点组合而成。

1. 功能型组件设计思路


核心:以装饰宿主节点为己任

具体要怎么去做呢?我下面整理了三个要点:

  1. 专注自身节点和当前组件对象自己,尽可能少的去控制其它的对象。
  2. 谨慎设计properties属性,减少对外部组件、节点、资源的依赖,也就是说对游戏设计师无用的属性都不要暴露到属性面板上。
  3. 组件内部代码中杜绝对外部场景树的假设,避免出现cc.find、getChildByName等方法获取外部节点。

功能型组件一般会以纯脚本形式存在,如果做到了以上三点,我们编写的组件就可以像引擎内置的组件一样可以被随处使用了。甚至还可以跨越不同的项目,Shawn在CreatorPrimer配套代码仓库中的组件大多都是这类,供大家参考:https://github.com/ShawnZhang2015/CreatorPrimer.git

在实际项目中,不可避免的会存在有相互依赖的组件,建议将有相互依赖的组件代码,归类存放同一路径方便管理。

2. 控制型组件设计思路


核心:管理和控制子孙节点

功能型组件用于解决功能点的问题,而不能解决业务、流程、相对复杂逻辑问题,这些问题的处理办法我们需要使用控制型组件来完成。

控制型组件的职责没有像功能型组件那么单纯,还需要从他们两方面来进行说明。

对内要点


控制型组件对内它管理和控制子孙节点,这是划定了他的控制的范围,警惕越界。其次,控制型组件管理的手段是调用子孙节点上的组件方法或属性、监听子节点组件的事件,但尽量不参杂功能细节上的问题,这类问题由功能型组件完成。

对外要点

内部安定好,我们看怎么面对外部,看下图:

站在更高的层次去看控制型组件,它也可以被上层控制组件所管理,从上层视角看控制型组件也是功能型组件,同样解决某个点上的问题,比如最常见的:cc.ScrollView。

控制型组件同样遵守部分功能型组件的一些规则:

  1. 不要暴露内部节点和组件,也就是说,不要为了在代码中访问内部子节点或组件方便,将它们设计成properties属性,他们对游戏设计师没有任何帮助,反面形成了干扰,这里需要关注的是封装性。
  2. 控制型组通常会与预制件结合形成独立的模块,并能与其它组件或模块相互组合嵌套,形成更复杂的业务模块,以达到模块化能力。

以这种方式设计组件,尽可能为项目生产出一个个相对独立的模块,再用各个模块搭建完整的游戏。

3. 小结


本篇主要介绍了功能型组件与控制型组件的一点点心得,供大家参考,最为主要的还是对面向对象设计原则的应用。在此欢迎大家留言讨论,在组件开发中遇到的问题。下一次继续为大家分享,控制型组件预制件编辑上的一些心得,欢迎关注。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-10-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Creator星球游戏开发社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 功能型组件设计思路
  • 2. 控制型组件设计思路
  • 3. 小结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档