数据驱动组件是实现以数据来驱动事件交互行为,即,在组件运行状态下,解析从外部(服务器、客户端)的数据并执行相应的操作;数据对组件来说可以看作指令,组件解析相应的命令并执行相应的操作。视频地址:https://www.bilibili.com/video/av84863475
客户端可以把DataDrivenCom当作一个组件使用。整个组建是以分层的架构实现的,最低层的服务即可以为组件高层提供服务,也可以为客户端程序提供服务。因为组件的底层封装了一些通用的功能,包括:
1、封装了一些通用的事件,客户端可以在程序的内部轻松的调用这些事件;
这些指令分成操作资源类(指令名称以“op”开头)、事件响应类(指令名称以“event”开头)。op类主要操作被组建托管的资源(模型、UI
脚本);event类主要调用组件内实现的事件,这些事件主要包括鼠标事件(拖拽,左、右键单击,双击,滑轮滚动等)、GameObject事件(射线检测、发出射线、
物体碰撞等)。对这些指令类或者方法可以很容易被扩展,比如,要添加键盘事件,只需要添加一个键盘事件类并实现指令接口即可;值得一提是,这些事件的调用
不仅组件内部可以调用,客户端程序也可以调用,因为这些事件已经实现成GameObject的扩展方法。要调用一个事件,客户端不必创建单独的脚本,并用Update类
似的方法来检测了,只需要调用GameObject这些扩展方法就能完成相应的时间检测,并在事件的条件满足时调用客户端自定义的函数。而且,客户端并不会获得这些
实现的细节(组件封装了这些细节,它对用户来说是透明的)。关于指令的详细介绍,请参见DataDrivenCom API。
2、提供了一些托管资源的思想和通用方法(如,查找资源中的某个物体),达到了和直接持有这些资源同样的查询速度。组件内部通过名字托管,利用了字典的Hash
散射来查询这些物体,并返回该物体的对象。
3、提供了一些通用的操作资源的方法。如,使物体发光(表明出现高光效果),改变物体的transform属性,控制动画的播放等等,这些在客户端实现虽然相当容
易,组件还提供了根据字符串来实现这些操作的方法,根据上面的功能,将实现控制逻辑和资源的解耦。用户只要要添加或更改配置文件即可完成整个程序的控制逻
辑。通过配置文件对游戏资源进行管理,极大地实现了代码的重用,而且在很大程度上加快了开发效率。
4、提供了一组控制UI的操作。组件内部对NGUI的一些源码进行了修改,客户端可以可视化地操作要被控制的UI控件,只需要该UI空间被框架托管,就可以在配置文
件中控制UI资源层,获取UI并更改其属性。
5、DataDrivenCom提供了一组函数注册机制来实现控制反转(IOC),并在程序的内容提供了注册类模板,客户端(用户)可以通过扩展模板类来容易地扩充要被重
用的函数。该组件也提供了在配置文件中对客户端函数的依赖注入,在框架和客户端程序交互的工程中,将配置文件中的数据注入到客户端函数中的相应参数中。
6、提供了一组常用的工具类,如,从字符串中提取一组任意类型数字,一个可控制颜色的控制台打印方法等。