ContextActionService
继承自:
描述
ContextActionService是一种游戏服务,允许游戏将用户输入绑定到上下文动作,或仅在某些条件或时间段下启用的动作。例如,只允许玩家在关门时打开门。在代码中,动作只是服务用来区分独特动作的字符串(动作的名称)。操作字符串提供给BindAction和UnbindAction以及其他成员函数。如果两个操作绑定到同一个输入,则最近绑定的操作将具有优先级。当最近的操作被解除绑定时,之前绑定的操作将再次获得控制权。由于ContextActionService处理用户输入,因此只能在客户端上运行的LocalScripts中使用它
函数
void UnbindAllContext () |
---|
移除所有的函数绑定 |
void UnbindAllActions () |
---|
这套新接口) |
获取当前所有绑定的事件信息 |
获取当前本地tool图片 |
绑定激活 |
解绑激活 |
设置描述 |
设置图片 |
设置位置 |
设置标题 |
绑定一个回调函数到指定输入上 |
void BindContextAtPriority (string actionname, LuaFunction func, bool createTouchBtn, int priority, ReflexVariant hotkey) |
---|
绑定一个回调函数到指定输入上,并指定优先级 |
取消指定的用户绑定 |
lua回调函数 |
这套新接口) |
这套新接口) |
void BindActionAtPriority (string actionName, LuaFunction func, int priority, int nActionType, int nSubType) |
---|
这套新接口) |
这套新接口) |
获取当前绑定actionName的事件信息 |
通过绑定名称获取该按钮节点 |
事件
当绑定行为发生改变时,会触发一个BoundActionChanged时间 |
新增某绑定行为 |
移除某绑定行为 |
代码示例
lua
-- 推荐使用
local ContextActionService = game:GetService("ContextActionService")
ContextActionService:BindContext("WkeydownactionName", function(actionName, inputState, inputObj)
if inputState == Enum.UserInputState.InputBegin.Value then
print("ContextActionService begin", actionName)
else
print("ContextActionService end", actionName)
end
end, false, Enum.KeyCode.W )
-- 即将废弃
local ContextActionService = game:GetService("ContextActionService")
local curActionName = "moveForwardAction"
local function handleMoveForward(actionName, inputState, inputObj)
print(actionName) -- 打印 moveForwardAction
if inputState == Enum.UserInputState.InputBegin.Value then
self.ForwardBackValue = 1
else
self.ForwardBackValue = 0
end
self.LocalCharacter:Move(Vector3.New(self.LeftRightValue,0,self.ForwardBackValue),true)
end
ContextActionService:BindAction(
curActionName,
handleMoveForward,
Enum.ContextActionType.KeyBoard.Value,
Enum.KeyCode.W.Value )