ContextActionService

Mostrar obsoleto

*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.

Não criável
Serviço

Permite a una experiencia vincular la entrada del usuario a acciones contextuales, o acciones que solo se habilitan bajo alg

Contexto e acción

Un contexto es simplemente una condición durante la cual un jugador puede realizar alguna acción. Algunos ejemplos incluyen mantener un Tool , estar sentado en un asiento de coche o al pie de una puerta.

Una acción es simplemente un par de entrada que el jugador puede

Vinculando Acciones Contextualmente

Es mejor usar ContextActionService's <

Inspeccionando Acciones de Límite

Para ver una lista de acciones y sus entradas vinculadas, puede inspeccionar la pestaña "Vinculación de acciones" en la Consola del Desarrollador (F9 mientras está en el juego). Esto muestra todas las vinc

Entrada sin teclado

Este servicio es especialmente útil para apoyar la plataforma de juegos y la entrada táctil. Para la entrada táctil, puede elegir vincular el botón B a una acción que devuelve al usuario al menú anterior cuando ingresa a otro menú. Para la entrada de juegos,

Amostras de código

ContextActionService Tool Reload

local ContextActionService = game:GetService("ContextActionService")
local ACTION_RELOAD = "Reload"
local tool = script.Parent
local function handleAction(actionName, inputState, _inputObject)
if actionName == ACTION_RELOAD and inputState == Enum.UserInputState.Begin then
print("Reloading!")
end
end
tool.Equipped:Connect(function()
ContextActionService:BindAction(ACTION_RELOAD, handleAction, true, Enum.KeyCode.R)
end)
tool.Unequipped:Connect(function()
ContextActionService:UnbindAction(ACTION_RELOAD)
end)

Resumo

Métodos

Eventos

Propriedades

Métodos

BindAction

void

Vincula una acción a la entrada de usuario dada una función de manejo de acciones. Cuando

El código de ejemplo a continuación muestra cómo un Sound puede ser played mientras una tecla ( H), botón de plataforma de juego o botón de pantalla táctil se presiona.


local ContextActionService = game:GetService("ContextActionService")
-- Un sonido de cuerno de automóvil
local honkSound = Instance.new("Sound", workspace)
honkSound.Looped = true
honkSound.SoundId = "rbxassetid://9120386436"
local function handleAction(actionName, inputState, inputObject)
if actionName == "HonkHorn" then
if inputState == Enum.UserInputState.Begin then
honkSound:Play()
else
honkSound:Pause()
end
end
end
-- Cuando el jugador se sienta en el vehículo:
ContextActionService:BindAction("HonkHorn", handleAction, true, Enum.KeyCode.H, Enum.KeyCode.ButtonY)
-- Cuando el jugador se vaya:
ContextActionService:UnbindAction("HonkHorn")

Parámetros de manejador de acción

Las funciones de manejador de acciones se llaman con los siguientes parámetros:


<tr>
<td>1</td>
<td><code>cadena</code></td>
<td>La misma cadena que se pasó originalmente a BindAction</td>
</tr>
<tr>
<td>2</td>
<td><code>Estado de entrada de usuario</code></td>
<td>El estado de la entrada (Empezar, Cambiar, Terminar o Cancelar)\*</td>
</tr>
<tr>
<td>3</td>
<td><code>Objeto de entrada</code></td>
<td>Un objeto que contiene información sobre la entrada (varía según UserInputType)</td>
</tr>
#TipoDescripción

° Esto permite que una función maneje múltiples acciones a la vez, si es necesario. *Cancel se envía si se ingresó alguna acción en progreso y otra acción vinculada a la entrada en progreso, o si la acción vinculada en progreso era unbound .

Pila de vinculaciones de acciones

Las funciones

Botones táctiles

Además de los tipos de entrada, este parámetro de función controla si se creacionesun botón para dispositivos Class.UserInputService.TouchEnabled

Parâmetros

actionName: string

Una cadena que representa la acción que se está ejecutando (por ejemplo, "HonkHorn" o "OpenDoor").

functionToBind: function

La función de manejo de acciones, llamada con los siguientes parámetros cuando se activan los input de vinculación: string (actionName), Enum.UserInputState y un objeto de entrada.

createTouchButton: bool

Si debe crearse un botón de GUI para la acción en dispositivos de entrada táctil.

inputTypes: Tuple

Cualquier número de Enum.KeyCode o Enum.UserInputType representando las entradas para vincular a la acción.


Devolução

void

Amostras de código

ContextActionService Tool Reload

local ContextActionService = game:GetService("ContextActionService")
local ACTION_RELOAD = "Reload"
local tool = script.Parent
local function handleAction(actionName, inputState, _inputObject)
if actionName == ACTION_RELOAD and inputState == Enum.UserInputState.Begin then
print("Reloading!")
end
end
tool.Equipped:Connect(function()
ContextActionService:BindAction(ACTION_RELOAD, handleAction, true, Enum.KeyCode.R)
end)
tool.Unequipped:Connect(function()
ContextActionService:UnbindAction(ACTION_RELOAD)
end)
General Action Handler

local ContextActionService = game:GetService("ContextActionService")
local function handleAction(actionName, inputState, inputObj)
if inputState == Enum.UserInputState.Begin then
print("Handling action: " .. actionName)
print(inputObj.UserInputType)
end
-- Since this function does not return anything, this handler will
-- "sink" the input and no other action handlers will be called after
-- this one.
end
ContextActionService:BindAction("BoundAction", handleAction, false, Enum.KeyCode.F)
Stacked Action Handlers

local ContextActionService = game:GetService("ContextActionService")
-- Define an action handler for FirstAction
local function actionHandlerOne(actionName, inputState, _inputObj)
if inputState == Enum.UserInputState.Begin then
print("Action Handler One: " .. actionName)
end
-- This action handler returns nil, so it is assumed that
-- it properly handles the action.
end
-- Binding the action FirstAction (it's on the bottom of the stack)
ContextActionService:BindAction("FirstAction", actionHandlerOne, false, Enum.KeyCode.Z, Enum.KeyCode.X, Enum.KeyCode.C)
-- Define an action handler for SecondAction
local function actionHandlerTwo(actionName, inputState, inputObj)
if inputState == Enum.UserInputState.Begin then
print("Action Handler Two: " .. actionName)
end
if inputObj.KeyCode == Enum.KeyCode.X then
return Enum.ContextActionResult.Pass
else
-- Returning nil implicitly Sinks inputs
return Enum.ContextActionResult.Sink
end
end
-- Binding SecondAction over the first action (since it bound more recently, it is on the top of the stack)
-- Note that SecondAction uses the same keys as
ContextActionService:BindAction("SecondAction", actionHandlerTwo, false, Enum.KeyCode.Z, Enum.KeyCode.X)

BindActionAtPriority

void

BindActionAtPriority se comporta como BindAction pero también permite asignar una prioridad a la acción vinculada. Si varias acciones están vinculadas a la misma entrada, la función de prioridad más alta se llama independientemente del orden en que se vinculan las acciones. En otras palabras, esta función sobresigue el comportamiento normal de BindAction.

Parâmetros

actionName: string

Una cadena que representa la acción que se está ejecutando (por ejemplo, "HonkHorn" o "OpenDoor").

functionToBind: function

La función de manejo de acciones, llamada con los siguientes parámetros cuando se activan los input de vinculación: string (actionName), Enum.UserInputState y un objeto de entrada.

createTouchButton: bool

Si debe crearse un botón de GUI para la acción en dispositivos de entrada táctil.

priorityLevel: number

El nivel de prioridad en el que debe enlazarse la acción (más alto considerado antes de menor).

inputTypes: Tuple

Cualquier número de Enum.KeyCode o Enum.UserInputType que represente las entradas para vincular a la acción.


Devolução

void

Amostras de código

ContextActionService BindAction Priorities

local ContextActionService = game:GetService("ContextActionService")
local INPUT_KEY1 = Enum.KeyCode.Q
local INPUT_KEY2 = Enum.KeyCode.E
local function handleThrow(actionName: string, inputState: Enum.UserInputState, inputObject: InputObject)
if inputState ~= Enum.UserInputState.Begin then
return Enum.ContextActionResult.Pass
end
print(`Action [{actionName}] occurred. KeyCode [{inputObject.KeyCode}] pressed.`)
return Enum.ContextActionResult.Sink
end
local function handlePunch(actionName: string, inputState: Enum.UserInputState, inputObject: InputObject)
if inputState ~= Enum.UserInputState.Begin then
return Enum.ContextActionResult.Pass
end
print(`Action [{actionName}] occurred. KeyCode [{inputObject.KeyCode}] pressed.`)
return Enum.ContextActionResult.Sink
end
-- Without specifying priority, the most recently bound action is called first,
-- so pressing INPUT_KEY1 prints "Punch" and then sinks the input.
ContextActionService:BindAction("DefaultThrow", handleThrow, false, INPUT_KEY1)
ContextActionService:BindAction("DefaultPunch", handlePunch, false, INPUT_KEY1)
-- Here we bind both functions in the same order as above, but with explicitly swapped priorities.
-- That is, we give "Throw" a higher priority of 2 so it will be called first,
-- despite "Punch" still being bound more recently.
-- Pressing INPUT_KEY2 prints "Throw" and then sinks the input.
ContextActionService:BindActionAtPriority("PriorityThrow", handleThrow, false, 2, INPUT_KEY2)
ContextActionService:BindActionAtPriority("PriorityPunch", handlePunch, false, 1, INPUT_KEY2)

BindActivate

void

Vinc

Nota que el Enum.UserInputType especificado debe ser Keyboard o Gamepad1 a través de 2>Gamepad82> para ser válido.

Parâmetros

userInputTypeForActivation: Enum.UserInputType

Debe ser Keyboard o Gamepad1 a través de Gamepad8.

keyCodesForActivation: Tuple

Devolução

void

GetAllBoundActionInfo

GetAllboundActioninfo devuelve una tabla que mapa todos los nombres de acción (los que se originaron originalmente en BindAction ) a una tabla devuelta por GetBoundActionInfo cuando se llama con el nombre de acción. Esto es útil cuando se debuga sus niveles de prioridad o órdenes de apilamiento.


Devolução

GetBoundActionInfo

GetBoundActionInfo返回一个包含以下键描述给予其名称的边界操作的表。要获得所有操作的相同信息,请使用 GetAllBoundActionInfo


<tr>
<td><code>Orden de pila</code></td>
<td>número</td>
<td>
Describe el índice de la acción en la pila (aumentando)
</td>
</tr>
<tr>
<td><code>nivel de prioridad</code> \*</td>
<td>número</td>
<td>
Describe el nivel de <code>Class.ContextActionService:BindActionAtPriority()|priority</code> de la acción
</td>
</tr>
<tr>
<td><code>crearTouchButton</code></td>
<td>booleano</td>
<td>
Describe si debe crearse un botón de toque en <code>Class.UserInputService.TouchEnabled|TouchEnabled</code> dispositivos
</td>
</tr>
<tr>
<td><code>tipos de entrada</code></td>
<td>mesa</td>
<td>
Los tipos de entrada pasados a <code>Class.ContextActionService:BindAction() |BindAction</code> para los cuales se desencadenadoresta acción
</td>
</tr>
<tr>
<td><code>descripción</code> ^</td>
<td>cadena</td>
<td>
La descripción de la acción establecida por <code>Class.ContextActionService:SetDescription()|SetDescription</code>
</td>
</tr>
<tr>
<td><code>título</code> ^</td>
<td>cadena</td>
<td>
El título del conjunto de acciones establecido por <code>Class.ContextActionService:SetTitle()|SetTitle</code>
</td>
</tr>
<tr>
<td><code>imagen</code> ^</td>
<td>cadena</td>
<td>
La imagen del botón de acción del objeto de tiempo de ejecución establecido por <code>Class.ContextActionService:SetImage()|SetImage</code>
</td>
</tr>
NombreTipoDescripción

Aún se incluirá el nivel de prioridad incluso si no se usa BindActionAtPriority - por defecto será 2000.

Indica que este campo será nil si el método asociado no fue llamado para la acción proporcionada.

Parâmetros

actionName: string

Devolução

GetCurrentLocalToolIcon

GetCurrentLocalToolIcon 返回 BackpackItem.TextureIdTool 当前 equipped 通过 1> Class.Player1> 或 4> nil4> 如果没有 such 工具或玩家没有 7> Class.Player


Devolução

Una cadena de contenido del ID de la Textura de la Herramienta, o nulo si no se pudo encontrar.

SetDescription

void

La descripción de la acción se establecerá por BindAction . En una lista de acciones disponibles, esto sería el texto que describe la acción proporcionada.

Aunque el nombre puede sugerir que este método está relacionado con la familia de funciones que personalizan un botón de toque para las acciónque crean ( SetTitle , SetImage y SetPosition), este método no afecta a un

Parâmetros

actionName: string

El nombre de la acción originalmente pasó a BindAction.

description: string

Una descripción de texto de la acción, como "Honk the car's horn" o "Abrir el inventario".


Devolução

void

Amostras de código

ContextActionService Touch Button

local ContextActionService = game:GetService("ContextActionService")
local ACTION_INSPECT = "Inspect"
local INPUT_INSPECT = Enum.KeyCode.E
local IMAGE_INSPECT = "rbxassetid://1826746856" -- Image of a speech bubble with ? in it
local function handleAction(actionName, inputState, _inputObject)
if actionName == ACTION_INSPECT and inputState == Enum.UserInputState.End then
print("Inspecting")
end
end
-- For touch devices, a button is created on-screen automatically via the 3rd parameter
ContextActionService:BindAction(ACTION_INSPECT, handleAction, true, INPUT_INSPECT)
-- We can use these functions to customize the button:
ContextActionService:SetImage(ACTION_INSPECT, IMAGE_INSPECT)
ContextActionService:SetTitle(ACTION_INSPECT, "Look")
ContextActionService:SetDescription(ACTION_INSPECT, "Inspect something.")
ContextActionService:SetPosition(ACTION_INSPECT, UDim2.new(0, 0, 0, 0))
-- We can manipulate the button directly using ContextActionService:GetButton
local imgButton = ContextActionService:GetButton(ACTION_INSPECT)
if imgButton then -- Remember: non-touch devices won't return anything!
imgButton.ImageColor3 = Color3.new(0.5, 1, 0.5) -- Tint the ImageButton green
end

SetImage

void

Este método establece la imagen mostrada en un botón táctil creado por BindAction() . En particular, establece la propiedad ImageLabel.Image de la ImageLabel dentro del

Esta función es parte de una familia de métodos que personalizan el botón de toque de una acción. Otros en esta familia incluyen SetPosition y SetTitle .

Parâmetros

actionName: string

El nombre de la acción originalmente pasó a BindAction.

image: string

El valor a el que debe establecerse la propiedad de la Imagen.


Devolução

void

Amostras de código

ContextActionService Touch Button

local ContextActionService = game:GetService("ContextActionService")
local ACTION_INSPECT = "Inspect"
local INPUT_INSPECT = Enum.KeyCode.E
local IMAGE_INSPECT = "rbxassetid://1826746856" -- Image of a speech bubble with ? in it
local function handleAction(actionName, inputState, _inputObject)
if actionName == ACTION_INSPECT and inputState == Enum.UserInputState.End then
print("Inspecting")
end
end
-- For touch devices, a button is created on-screen automatically via the 3rd parameter
ContextActionService:BindAction(ACTION_INSPECT, handleAction, true, INPUT_INSPECT)
-- We can use these functions to customize the button:
ContextActionService:SetImage(ACTION_INSPECT, IMAGE_INSPECT)
ContextActionService:SetTitle(ACTION_INSPECT, "Look")
ContextActionService:SetDescription(ACTION_INSPECT, "Inspect something.")
ContextActionService:SetPosition(ACTION_INSPECT, UDim2.new(0, 0, 0, 0))
-- We can manipulate the button directly using ContextActionService:GetButton
local imgButton = ContextActionService:GetButton(ACTION_INSPECT)
if imgButton then -- Remember: non-touch devices won't return anything!
imgButton.ImageColor3 = Color3.new(0.5, 1, 0.5) -- Tint the ImageButton green
end

SetPosition

void

Este método establece la posición de un botón de toque creado por BindAction() . En particular, establece la propiedad GuiObject.Position del botón de toque que se devolvería por ImageButton . Si no existe tal acción vinc

Esta función es parte de una familia de métodos que personalizan el botón de toque de una acción. Otros en esta familia incluyen SetImage y SetTitle .

Parâmetros

actionName: string

El nombre de la acción originalmente pasó a BindAction.

position: UDim2

La posición dentro del marco de contexto.


Devolução

void

Amostras de código

ContextActionService Touch Button

local ContextActionService = game:GetService("ContextActionService")
local ACTION_INSPECT = "Inspect"
local INPUT_INSPECT = Enum.KeyCode.E
local IMAGE_INSPECT = "rbxassetid://1826746856" -- Image of a speech bubble with ? in it
local function handleAction(actionName, inputState, _inputObject)
if actionName == ACTION_INSPECT and inputState == Enum.UserInputState.End then
print("Inspecting")
end
end
-- For touch devices, a button is created on-screen automatically via the 3rd parameter
ContextActionService:BindAction(ACTION_INSPECT, handleAction, true, INPUT_INSPECT)
-- We can use these functions to customize the button:
ContextActionService:SetImage(ACTION_INSPECT, IMAGE_INSPECT)
ContextActionService:SetTitle(ACTION_INSPECT, "Look")
ContextActionService:SetDescription(ACTION_INSPECT, "Inspect something.")
ContextActionService:SetPosition(ACTION_INSPECT, UDim2.new(0, 0, 0, 0))
-- We can manipulate the button directly using ContextActionService:GetButton
local imgButton = ContextActionService:GetButton(ACTION_INSPECT)
if imgButton then -- Remember: non-touch devices won't return anything!
imgButton.ImageColor3 = Color3.new(0.5, 1, 0.5) -- Tint the ImageButton green
end

SetTitle

void

SetTitle establecerá el texto mostrado en un botón de toque creado por BindAction . En particular, esto establece la propiedad TextLabel.Text de un TextLabel dentro del

Esta función es parte de una familia de métodos que personalizan el botón de toque de una acción. Otros en esta familia incluyen SetImage y SetPosition .

Parâmetros

actionName: string

El nombre de la acción originalmente pasó a BindAction.

title: string

El texto para mostrar en el botón.


Devolução

void

Amostras de código

ContextActionService Touch Button

local ContextActionService = game:GetService("ContextActionService")
local ACTION_INSPECT = "Inspect"
local INPUT_INSPECT = Enum.KeyCode.E
local IMAGE_INSPECT = "rbxassetid://1826746856" -- Image of a speech bubble with ? in it
local function handleAction(actionName, inputState, _inputObject)
if actionName == ACTION_INSPECT and inputState == Enum.UserInputState.End then
print("Inspecting")
end
end
-- For touch devices, a button is created on-screen automatically via the 3rd parameter
ContextActionService:BindAction(ACTION_INSPECT, handleAction, true, INPUT_INSPECT)
-- We can use these functions to customize the button:
ContextActionService:SetImage(ACTION_INSPECT, IMAGE_INSPECT)
ContextActionService:SetTitle(ACTION_INSPECT, "Look")
ContextActionService:SetDescription(ACTION_INSPECT, "Inspect something.")
ContextActionService:SetPosition(ACTION_INSPECT, UDim2.new(0, 0, 0, 0))
-- We can manipulate the button directly using ContextActionService:GetButton
local imgButton = ContextActionService:GetButton(ACTION_INSPECT)
if imgButton then -- Remember: non-touch devices won't return anything!
imgButton.ImageColor3 = Color3.new(0.5, 1, 0.5) -- Tint the ImageButton green
end

UnbindAction

void

UnbindAction desвяzará una acción por nombre de los usuarios para que el operador de acciones no se llame más. Llamar a esta función cuando el contexto de alguna acción ya no sea aplicable, como cerrar una interfaz de usuario, salir de un coche o unequipping un Class.Tool . Ver Class.ContextActionService:Bind

Esta función no lanzará un error si no hay tal acción vinculada con la cadena proporcionada . Usando GetAllBoundActionInfo o la pestaña "Acciones vinculadas" de la consola de desarrollador, puede encontrar qué acciones están vinculadas actualmente.

Parâmetros

actionName: string

Devolução

void

Amostras de código

ContextActionService Tool Reload

local ContextActionService = game:GetService("ContextActionService")
local ACTION_RELOAD = "Reload"
local tool = script.Parent
local function handleAction(actionName, inputState, _inputObject)
if actionName == ACTION_RELOAD and inputState == Enum.UserInputState.Begin then
print("Reloading!")
end
end
tool.Equipped:Connect(function()
ContextActionService:BindAction(ACTION_RELOAD, handleAction, true, Enum.KeyCode.R)
end)
tool.Unequipped:Connect(function()
ContextActionService:UnbindAction(ACTION_RELOAD)
end)

UnbindActivate

void

UnbindActivate unbinds an Enum.KeyCode (o un Enum.UserInputType ) for activating a Tool (o un 1> Class.UserInputType1> ) using 4> Class.ContextActionService:BindActivate()|BindActivate4> . Esta función básicamente deshace la acción realizada por esa

Parâmetros

userInputTypeForActivation: Enum.UserInputType

El mismo tipo de entrada de usuario originalmente enviado a BindActivate.

keyCodeForActivation: Enum.KeyCode

El mismo KeyCode originalmente enviado a BindActivate.

Valor Padrão: "Unknown"

Devolução

void

UnbindAllActions

void

Elimina todas las funciones vinculadas. No se eliminarán nombres de acción. Todos los botones de toque se eliminarán. Si se manipuló un botón manualmente, no hay garantía de que se limpie.


Devolução

void

GetButton

Rendimentos

GetButton返回创建的 ImageButton 创建 BindAction 如果其第三个参数是 true 并且设备是 TouchEnabled 。 该函数的唯一参数必须与原始发送到 BindAction 的操作名称相匹配。

Si no se vinculó tal acción o si no se creó un botón, esta función devuelve nil .

Parâmetros

actionName: string

El nombre de la acción originalmente pasó a BindAction.


Devolução

Un ImageButton creado por BindAction.

Eventos

LocalToolEquipped

Se activa cuando el jugador actual equipa un Tool .

Parâmetros

toolEquipped: Instance

LocalToolUnequipped

Dispara cuando el jugador actual desequipa un Tool .

Parâmetros

toolUnequipped: Instance