游戏快捷键系统架构(第一版)
来源:互联网 发布:张亚东高圆圆知乎 编辑:程序博客网 时间:2024/06/05 04:17
目的:基于引擎提供的两个接口“按键按下回调”(参数为按键id,任意按键按下时调用)和“按键抬起回掉”构建快捷键系统,要求能够通过此模块注册(组合)快捷键和注销(组合)快捷键,快捷键有绑定的函数,按下抬起被注册的快捷键时执行绑定的函数
流程:
按键按下之后引擎回掉“按键按下回调”函数,客户端记录当前这个按下的按键到一个列表中,当按键抬起回掉”函数响应的时候需要把对应的按键从列表中剔除,用于检测当前有哪些正在按下的按键,进而可以进行组合快捷键的判断。
全局快捷键模块记录着各个状态的快捷键-函数映射,状态代表玩家现在处于哪个场景中,这些场景可能是登陆、选人、设置、战斗等。然后根据快捷键-函数映射获取对应的函数并执行。此模块用来执行一些较为常用,功能变化较小的快捷键,例如ESC,enter,Ctrl+C,Ctrl+V,Tab。
自定义注册的快捷键需要在程序运行时自行注册,例如当一个主控英雄被创建的时候,就可以在它的创建函数中注册“按下事件”和“抬起事件”并将类中的函数与这两个事件对应起来,当按键被按下的时候会调用相应函数,可以在函数中判断当前被按下的按键是哪个然后执行相应的功能,比如说按下的键是w,就执行向前走动作,然后发送前走协议给服务端。与主控英雄相关的快捷键注册及快捷键对应函数都应在自己的类内完成。
缺点:
1.该需求的核心是对外部提供一个可注册,注销快捷键的接口,尽量降低耦合。也就是说,其他项目拿到这个模块之后可以通过有限的几个接口完成快捷键相关任务。而这个系统和其他模块的耦合度过大。
2.全局快捷键响应模块直接把快捷键-函数映射写死了,非常不灵活,如果新加场景,还要不断维护这个模块代码,如果替换快捷键又很麻烦。
3.主控英雄不应该与快捷键长生耦合关系,而应该在一个controller(创建主控英雄的地方)注册。
4.组合快捷键使用的时候需要判断这个按键有没有被记录在“已按下列表”中,太麻烦,应该直接在注册快捷键的函数参数表中通过一个列表设置
5.只有按键按下和抬起两种事件,所有函数都关联到这两个事件上,会导致每按下一个键有过多的无关函数被执行,效率极大的降低了。
流程:
- 游戏快捷键系统架构(第一版)
- 游戏快捷键系统架构(正式版)
- scrapy抓取+coreseek搜索架构(第一版)
- 远程控制浇花系统(第一版)
- 运动会分数统计系统开发(第一版)
- 从零开始Android游戏编程(第二版) 第一版前言
- 系统架构之一(RPG游戏常用架构)
- 系统架构之二(棋牌类游戏常用架构)
- 银行系统第一版
- 第一版 银行储蓄系统
- 电影网站站架构(第一版)
- 《游戏引擎架构》 笔记(二) 动画系统
- windows 7 系统服务 (第一版)
- 信息采集系统开发第一版
- Amazon Kindle 3 键盘快捷键第一版
- VBS基础教程(第一版)
- Gradle笔记(第一版)
- 用Java时写的第一个小小RPG游戏程序(第一版)
- android studio 更新 Gradle错误解决方法
- 判断checkbox是否选中的三种方法
- php设计模式之一__装饰者模式
- Eclipse打包出现 Export aborted because fatal lint errors were found.
- EditText属性及一些常用用法
- 游戏快捷键系统架构(第一版)
- 基本运算符及优先级
- 数字三角形
- mybits对于数据库返回的结果集为动态时用JSONObjst接收方法
- 前端神作,学好前端的法宝!
- 常用Java程序片段
- 集合_java集合框架
- php开发 API接口注册,登录,查询用户资料
- 第4组UI组件:AdapterView及其子类