ContextActionService

继承自

描述

ContextActionService是一种游戏服务,允许游戏将用户输入绑定到上下文动作,或仅在某些条件或时间段下启用的动作。例如,只允许玩家在关门时打开门。在代码中,动作只是服务用来区分独特动作的字符串(动作的名称)。操作字符串提供给BindAction和UnbindAction以及其他成员函数。如果两个操作绑定到同一个输入,则最近绑定的操作将具有优先级。当最近的操作被解除绑定时,之前绑定的操作将再次获得控制权。由于ContextActionService处理用户输入,因此只能在客户端上运行的LocalScripts中使用它

函数

void ()
移除所有的函数绑定
void ()
这套新接口)
获取当前所有绑定的事件信息
获取当前本地tool图片
voidBindActivate (int userInputTypeForActivate, int keyCodeForActivate)
绑定激活
voidUnbindActivate (int userInputTypeForActivate, int keyCodeForActivate)
解绑激活
voidSetDescription (string actionName, string description)
设置描述
voidSetImage (string actionName, string image)
设置图片
voidSetPosition (string actionName, Vector2 position)
设置位置
voidSetTitle (string actionName, string title)
设置标题
voidBindContext (string actionname, LuaFunction func, bool createTouchBtn, ReflexVariant hotkey)
绑定一个回调函数到指定输入上
voidBindContextAtPriority (string actionname, LuaFunction func, bool createTouchBtn, int priority, ReflexVariant hotkey)
绑定一个回调函数到指定输入上,并指定优先级
voidUnbindContext (string actionname)
取消指定的用户绑定
voidCallFunction (string actionName, UserInputState state, SandboxNode inputObject)
lua回调函数
voidBindAction (string actionName, LuaFunction func, int nActionType, int nSubType)
这套新接口)
voidBindActionWithButton (string actionName, LuaFunction func, int nActionType, int nSubType)
这套新接口)
voidBindActionAtPriority (string actionName, LuaFunction func, int priority, int nActionType, int nSubType)
这套新接口)
voidUnbindAction (string actionName)
这套新接口)
获取当前绑定actionName的事件信息
SandboxNodeGetButton (string actionName)
通过绑定名称获取该按钮节点

事件

SBXSignalBoundActionChanged (string actionName, string propname, ReflexMap table)
当绑定行为发生改变时,会触发一个BoundActionChanged时间
SBXSignalBoundActionAdded (string actionName, bool bCreateTouchBtn, ReflexMap table)
新增某绑定行为
移除某绑定行为

代码示例

-- 推荐使用
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 )
Last Updated: