游戏快捷键系统架构(第一版)
2016-12-24 14:21
204 查看
目的:基于引擎提供的两个接口“按键按下回调”(参数为按键id,任意按键按下时调用)和“按键抬起回掉”构建快捷键系统,要求能够通过此模块注册(组合)快捷键和注销(组合)快捷键,快捷键有绑定的函数,按下抬起被注册的快捷键时执行绑定的函数
流程:
按键按下之后引擎回掉“按键按下回调”函数,客户端记录当前这个按下的按键到一个列表中,当按键抬起回掉”函数响应的时候需要把对应的按键从列表中剔除,用于检测当前有哪些正在按下的按键,进而可以进行组合快捷键的判断。
全局快捷键模块记录着各个状态的快捷键-函数映射,状态代表玩家现在处于哪个场景中,这些场景可能是登陆、选人、设置、战斗等。然后根据快捷键-函数映射获取对应的函数并执行。此模块用来执行一些较为常用,功能变化较小的快捷键,例如ESC,enter,Ctrl+C,Ctrl+V,Tab。
自定义注册的快捷键需要在程序运行时自行注册,例如当一个主控英雄被创建的时候,就可以在它的创建函数中注册“按下事件”和“抬起事件”并将类中的函数与这两个事件对应起来,当按键被按下的时候会调用相应函数,可以在函数中判断当前被按下的按键是哪个然后执行相应的功能,比如说按下的键是w,就执行向前走动作,然后发送前走协议给服务端。与主控英雄相关的快捷键注册及快捷键对应函数都应在自己的类内完成。
缺点:
1.该需求的核心是对外部提供一个可注册,注销快捷键的接口,尽量降低耦合。也就是说,其他项目拿到这个模块之后可以通过有限的几个接口完成快捷键相关任务。而这个系统和其他模块的耦合度过大。
2.全局快捷键响应模块直接把快捷键-函数映射写死了,非常不灵活,如果新加场景,还要不断维护这个模块代码,如果替换快捷键又很麻烦。
3.主控英雄不应该与快捷键长生耦合关系,而应该在一个controller(创建主控英雄的地方)注册。
4.组合快捷键使用的时候需要判断这个按键有没有被记录在“已按下列表”中,太麻烦,应该直接在注册快捷键的函数参数表中通过一个列表设置
5.只有按键按下和抬起两种事件,所有函数都关联到这两个事件上,会导致每按下一个键有过多的无关函数被执行,效率极大的降低了。
流程:
流程:
按键按下之后引擎回掉“按键按下回调”函数,客户端记录当前这个按下的按键到一个列表中,当按键抬起回掉”函数响应的时候需要把对应的按键从列表中剔除,用于检测当前有哪些正在按下的按键,进而可以进行组合快捷键的判断。
全局快捷键模块记录着各个状态的快捷键-函数映射,状态代表玩家现在处于哪个场景中,这些场景可能是登陆、选人、设置、战斗等。然后根据快捷键-函数映射获取对应的函数并执行。此模块用来执行一些较为常用,功能变化较小的快捷键,例如ESC,enter,Ctrl+C,Ctrl+V,Tab。
自定义注册的快捷键需要在程序运行时自行注册,例如当一个主控英雄被创建的时候,就可以在它的创建函数中注册“按下事件”和“抬起事件”并将类中的函数与这两个事件对应起来,当按键被按下的时候会调用相应函数,可以在函数中判断当前被按下的按键是哪个然后执行相应的功能,比如说按下的键是w,就执行向前走动作,然后发送前走协议给服务端。与主控英雄相关的快捷键注册及快捷键对应函数都应在自己的类内完成。
缺点:
1.该需求的核心是对外部提供一个可注册,注销快捷键的接口,尽量降低耦合。也就是说,其他项目拿到这个模块之后可以通过有限的几个接口完成快捷键相关任务。而这个系统和其他模块的耦合度过大。
2.全局快捷键响应模块直接把快捷键-函数映射写死了,非常不灵活,如果新加场景,还要不断维护这个模块代码,如果替换快捷键又很麻烦。
3.主控英雄不应该与快捷键长生耦合关系,而应该在一个controller(创建主控英雄的地方)注册。
4.组合快捷键使用的时候需要判断这个按键有没有被记录在“已按下列表”中,太麻烦,应该直接在注册快捷键的函数参数表中通过一个列表设置
5.只有按键按下和抬起两种事件,所有函数都关联到这两个事件上,会导致每按下一个键有过多的无关函数被执行,效率极大的降低了。
流程:
相关文章推荐
- 游戏快捷键系统架构(正式版)
- 一款SNS战略休闲游戏开发笔记01——分布式系统逻辑架构设计的补充与讨论
- 系统架构之二(棋牌类游戏常用架构)
- 手机网络游戏系统架构图
- 游戏平台网站系统架构 账号篇
- 十全干货:核心游戏系统架构设计
- 架构系统游戏系统开发笔记(五)——服务端系统分层
- 如何在cocos2d-x中使用ECS(实体-组件-系统)架构方法开发一个游戏?
- 游戏引擎架构1:游戏性系统
- 游戏中的任务系统的简单架构!
- [转]混合语言的游戏开发系统架构
- 开源游戏学习- 模拟系统的架构设计
- 如何在cocos2d-x中使用ECS(实体-组件-系统)架构方法开发一个游戏?
- 游戏引擎架构选摘之第五章 游戏支持系统
- 游戏平台网站系统架构 账号篇
- 游戏系统开发笔记(六)——服务端架构设计
- 包包版网络游戏大厅+桥牌系统 2.游戏大厅的基本架构
- 游戏系统开发笔记(六)——服务端架构设计
- Unity教程之-Unity游戏技能Skill系统架构设计
- 混合语言的游戏开发系统架构