Skip to content

ContextActionService ​

成员函数 ​

void  BindActivate (int userInputTypeForActivate, int keyCodeForActivate)
绑定激活
void  UnbindActivate (int userInputTypeForActivate, int keyCodeForActivate)
解绑激活
获取当前所有绑定的事件信息
获取当前绑定actionName的事件信息
SandboxNode  GetButton (string actionName)
通过绑定名称获取该按钮节点
获取当前本地tool图片
void  SetDescription (string actionName, string description)
设置描述
void  SetImage (string actionName, string image)
设置图片
void  SetPosition (string actionName, Vector2 position)
设置位置
void  SetTitle (string actionName, string title)
设置标题
void  BindContext (string actionname, function func, bool createTouchBtn, ReflexVariant hotkey)
绑定一个回调函数到指定输入上
void  BindContextAtPriority (string actionname, function func, bool createTouchBtn, int priority, ReflexVariant hotkey)
绑定一个回调函数到指定输入上,并指定优先级
void  UnbindContext (string actionname)
取消指定的用户绑定
void  UnbindAllContext ()
移除所有的函数绑定
void  CallFunction (string actionName, UserInputState state, SandboxNode inputObject)
lua回调函数
void  BindAction (string actionName, function func, int nActionType, int nSubType)
绑定一个回调函数到指定输入上(准备废弃接口,不推荐使用了,推荐使用 BindContext 这套新接口)
void  BindActionWithButton (string actionName, function func, int nActionType, int nSubType)
绑定一个回调函数到按钮事件(准备废弃接口,不推荐使用了,推荐使用 BindContext 这套新接口)
void  BindActionAtPriority (string actionName, function func, int priority, int nActionType, int nSubType)
绑定一个回调函数到指定输入上,并指定优先级(准备废弃接口,不推荐使用了,推荐使用 BindContext 这套新接口)
void  UnbindAction (string actionName)
取消指定的用户绑定(准备废弃接口,不推荐使用了,推荐使用 BindContext 这套新接口)
void  UnbindAllActions ()
移除所有的函数绑定(准备废弃接口,不推荐使用了,推荐使用 BindContext 这套新接口)

事件 ​

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

代码示例 ​

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 )