游戏快捷键系统架构(正式版)

本文介绍如何利用提供的按键回调接口构建一套快捷键系统,包括注册和注销快捷键的方法,以及实现组合键功能的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目的:基于引擎提供的两个接口“按键按下回调”(参数为按键id用以标识哪个按键,任意按键按下时调用)和“按键抬起回掉”构建快捷键系统,要求能够通过此模块注册(组合)快捷键和注销(组合)快捷键,快捷键有绑定的函数,按下抬起被注册的快捷键时执行绑定的函数

做法:
核心的函数是一个注册函数,这个注册函数的参数表有:1.快捷键列表,单个快捷键的话,列表中就只有一个按键。2.快捷键对应函数,此函数当对应快捷键按下时被调用,如果想解注册,这个函数就为空。3.参数列表,函数被调用的时候,将此列表中的东西作为参数传递给函数。

我们需要一个全局的按键对象字典,字典中存储着按键和按键对象(后面会讲到按键对象的组成)一一对应的关系。当注册函数被调用时,我们需要做两件事:1.为注册按键对应的按键对象设置信息。 2.全局的按键对象字典的管理。

注册完毕之后,当“按键按下回调”被触发之后,就可以从全局的按键对象字典中找到快捷键对应的按键对象,让按键对象去执行其内部存储的函数。这里还会涉及输入框(输入框激活时不执行快捷键)和连续按键触发。

按键对象需要解决的是组合键注册和选取当前应执行函数的问题,其内部需要有一个组合键-函数对应字典,字典中的所有组合键都包含当前按键对象在全局的按键对象字典 中对应的按键。比如说,一个对象在全局的按键对象字典中对应的按键是W,而游戏中注册了ctrl+W是升级,shift+W是降级,W是释放技能,则这个按键对象的组合键-函数字典中就应该包含[w],[w,shift],[w,ctrl]三个组合键-函数对应。另外,我们需要在按键被触发的时候只执行一个回调函数,这样就确保了不会发生多重回调。例如我按shift+W的时候只执行降级函数,而不能执行释放函数。这里就要有个选取规则,我建议的规则是按组合键键数从多到少排序。判断组合键的时候需要用到“此按键是否被按下”函数,例如当前按下了w,此时判断shift有没有被按下,如果按下了,则执行shift+W对应的函数。我们可以通过“按键按下回调“和“按键抬起回掉”时记录当前按下的按键来制作这个函数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值