键位绑定服务
- 类型:ContextActionService
服务对象
此对象为服务对象,可以使用GetService()
函数获取此服务。
不可创建
无法使用RWObject:New(Classname)
创建此对象,也不在编辑器对象列表中显示。
不在编辑器管理器中显示
脚本可访问
此对象脚本可访问,但只有客户端脚本可访问
简介
键位绑定服务是游戏中用于设置快捷键或者在特定条件下触发指定函数的服务。
新建快捷键
键位绑定服务通过BindInput()
函数,可以将用户输入与指定的函数绑定,例如在键盘Q、E、R按键上绑定一个打印输出的函数(代码见示例1),用户在按下键盘Q、E、R键后,即会在控制台打印输出。
默认快捷键
游戏初始化后会有一些默认的绑定快捷键,比如TAB键默认为打开游戏中的玩家列表,可以通过GetAllBindInputInfo()
函数来获取这些默认快捷键的信息。
删除快捷键
通过RemoveBindInput()
和RemoveAllBindInputs()
来删除已绑定的快捷键。
快捷键冲突
若同一个按键被赋予了多个绑定的函数,那么当该键按下时,会根据绑定函数时预设的优先级进行执行,优先执行优先级最高的函数。通过BindInput()
函数设置的快捷键优先级默认为-1,使用BindInputByPriority()
可以手动设置优先级。
注意事项
作为服务,工作区在通过脚本调用时推荐使用GetService()
函数进行调用。但仅限于客户端脚本
.
local contextActionService=GetService("ContextActionService") --获取工作区服务对象
游戏中的默认移动按键 W、A、S、D 和跳跃按键 空格 不属于该绑定服务,因此不可通过键位绑定服务的函数对它们进行删除。另外在设置新的绑定函数时也应该避免上述的这几个按键。
相关链接
- 教学视频
函数
BindInput(actionName,functionName,…)
用于设定触发函数的快捷键。通过此方法创建的BindInputInfo的优先级为-1。当同一个BindInput的多个事件被触发时,优先级大的先被触发
BindInputByPriority(actionName,functionName,priorityLevel,…)
用于设定触发函数的快捷键,通过此方法设定的优先级最小为0,当同一个BindInput的多个事件被触发时,优先级大的先被触发
GetAllBindInputInfo()
获得所有绑定信息,作为一个列表并返回
GetBindInputInfo(actionName)
获得指定actionName的绑定信息,作为列表返回
RemoveBindInput(actionName)
将指定actionName的绑定信息删除
RemoveAllBindInputs()
删除所有绑定信息
实例
实例1 绑定快捷键
创建一个函数,将函数还有键位都注册到该方法中,然后根据自己设定的按钮按下键位,观察是否打印。
wait(2) -- 等待2
local cas=GetService("ContextActionService") --获取键位绑定服务
function test() -- 测试函数定义
print("testSuccess")
end
cas:BindInput("first",test,Enum.KeyCode.Q,Enum.KeyCode.E,Enum.KeyCode.R) -- 操作名称为first,将按键Q,E,R集合绑定在test