ContextActionService

사용되지 않는 항목 표시

*이 콘텐츠는 AI(베타)를 사용해 번역되었으며, 오류가 있을 수 있습니다. 이 페이지를 영어로 보려면 여기를 클릭하세요.

만들 수 없음
서비스

경험에서 사용자 입력을 컨텍스트 작업, 또는 특정

컨텍스트 및 액션

컨텍스트는 플레이어가 어떤 액션수행할 수 있는 조건을 나타냅니다. 몇 가지 예는 플레이어가

액션은 플레이어가 이 컨텍

액션 컨텍스트 바인딩

대부분의 경우

바운드 액션 검사

액션 및 해당 액션에 바인딩된 입력의 목록을 보려면 개발자 콘솔의 "액션 바인딩" 탭을 검사하십시오(F

키보드 입력 없음

이 서비스는 게임 패드 및 터치 입력을 지원하는 데 특히 유용합니다. 게임 패드 입력의 경우 B 버튼을 다른 메뉴에 들어갈 때 사용자를

코드 샘플

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)

요약

메서드

이벤트

속성

메서드

BindAction

void

액션 처리 함수에 액션 처리 기능을 결합하십시오.

아래 코드 샘플은 Sound 를 사용하여 키( played ) 게임 패드 버튼 또는 터치 화면 버튼을 누르는 동안 Class.Sound:Play()|플레이 를 할 수 있는 방법을 보여줍니다.


local ContextActionService = game:GetService("ContextActionService")
-- 자동차 경적 사운드
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
-- 플레이어가 차량에 앉을 때:
ContextActionService:BindAction("HonkHorn", handleAction, true, Enum.KeyCode.H, Enum.KeyCode.ButtonY)
-- 플레이어가 나갈 때:
ContextActionService:UnbindAction("HonkHorn")

액션 처리기 매개 변수

액션 처리기는 다음과 같은 매개 변수로 호출됩니다.


<tr>
<td>1</td>
<td><code>문자열</code></td>
<td>BindAction에 처음 전달된 동일한 문자열입니다.</td>
</tr>
<tr>
<td>2</td>
<td><code>열거형.UserInputState</code></td>
<td>입력의 상태(시작, 변경, 종료 또는 취소)\*</td>
</tr>
<tr>
<td>3</td>
<td><code>입력 개체</code></td>
<td>사용자 입력 유형에 대한 정보가 포함된 개체(기본값: UserInputType)</td>
</tr>
#유형설명

※ 이 기능을 사용하면 여러 작업을 한 번에 처리할 수 있습니다. ※ 필요한 경우 취소를 보냅니다. ※ 입력 중 하나가 진행 중이고 다른 입력이 바인딩된 경우 ※ 입력 중 하나가 unbound 입니다.

액션 바인딩 스택

액션

터치 버튼

입력 유형 외에도 이 함수의 세 번째 매개 변수는 버튼이 작품장치에 대

매개 변수

actionName: string

수행 중인 동작을 나타내는 문자열(예: "HonkHorn" 또는 "OpenDoor")입니다.

functionToBind: function

바인딩 입력이 발생했을 때 다음 매개 변수로 호출되는 동작 처리 함수: string (actionName), Enum.UserInputState 및 입력 개체.

createTouchButton: bool

터치 입력 장치에 대한 작업에 대해 GUI 버튼을 만들어야 하는지 여부.

inputTypes: Tuple

입력을 액션에 바인딩하는 모든 숫자 Enum.KeyCode 또는 Enum.UserInputType 중 하나입니다.


반환

void

코드 샘플

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는 BindAction처럼 행동하지만, 우선 순위를 바인딩 액션에 할당할 수도 있습니다. 여러 액션이 동일한 입력에 바인딩되면 우선 순위 함수는 액션이 바인딩된 순서에 관계없이 호출됩니다. 즉, 이 함수는 다른 행동을 나타

매개 변수

actionName: string

수행 중인 동작을 나타내는 문자열(예: "HonkHorn" 또는 "OpenDoor")입니다.

functionToBind: function

바인딩 입력이 발생했을 때 다음 매개 변수로 호출되는 동작 처리 함수: string (actionName), Enum.UserInputState 및 입력 개체.

createTouchButton: bool

터치 입력 장치에 대한 작업에 대해 GUI 버튼을 만들어야 하는지 여부.

priorityLevel: number

동작에 바인딩할 우선 순위 수준(하단에서 상단까지 고려).

inputTypes: Tuple

액션에 바인딩할 입력의 숫자.KeyCode 또는 Enum.UserInputType 중 하나입니다.


반환

void

코드 샘플

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

유효하려면 Enum.UserInputType 을 통해 Keyboard 또는 Gamepad1 을 통해 1>Gamepad81> 을 통해야 합니다.

매개 변수

userInputTypeForActivation: Enum.UserInputType

게임패드8을 통해 키보드 또는 Gamepad1이어야 합니다.

keyCodesForActivation: Tuple

반환

void

GetAllBoundActionInfo

GetAllBindActioninfo 는 모든 작업 이름 (원래 전달 된 Class.ContextActionService:BindAction()|BindAction) 을 Class.ContextActionService:GetBindActionInfo()|GetBindAction) 에 맵하는 테이블을 반환합니다. 이 함수를 사용하여 우선 순위 수준 또는 스택 명령을 디버깅할


반환

GetBoundActionInfo

GetBoundActionInfo는 이름을 지정한 바인드 액션에 대한 바인드 액션 설명을 포함하는 테이블을 반환합니다. 모든 액션에 대해 동일한 정보를 얻으려면 GetAllBoundActionInfo를 사용하십시오.


<tr>
<td><code>stackOrder</code></td>
<td>숫자</td>
<td>
스택의 동작 인덱스(증가)에 대한 설명
</td>
</tr>
<tr>
<td><code>우선 수준</code> \*</td>
<td>숫자</td>
<td>
동작의 <code>Class.ContextActionService:BindActionAtPriority()|우선 순위</code> 수준을 설명합니다.
</td>
</tr>
<tr>
<td><code>createTouchButton()</code></td>
<td>부울</td>
<td>
Class.UserInputService.TouchEnabled|TouchEnabled 장치에 터치 버튼을 생성할지 여부를 설명합니다.
</td>
</tr>
<tr>
<td><code>입력 유형</code></td>
<td>테이블</td>
<td>
이 액션이 트리거되는 <code>Class.ContextActionService:BindAction()|BindAction</code> 에 대한 입력 유형
</td>
</tr>
<tr>
<td><code>설명</code> ※</td>
<td>문자열</td>
<td>
Class.ContextActionService:SetDescription()|SetDescription을 사용하여 설명한 동작 집합
</td>
</tr>
<tr>
<td><code>타이틀</code> ※</td>
<td>문자열</td>
<td>
Class.ContextActionService:SetTitle()|SetTitle의 동작 세트 제목
</td>
</tr>
<tr>
<td><code>이미지</code> ※</td>
<td>문자열</td>
<td>
Class.ContextActionService:SetImage()|SetImage 에 의해 설정된 동작 버튼의 이미지
</td>
</tr>
이름유형설명

여전히 우선 순위 수준이 포함되지만 BindActionAtPriority 를 사용하지 않은 경우 - 기본적으로 2000이 됩니다.

※ 지정된 액션대해 연관된 메서드가 호출되지 않은 경우 이 필드가 nil 이 됩니다.

매개 변수

actionName: string

반환

GetCurrentLocalToolIcon

GetCurrentLocalToolIcon 은 BackpackItem.TextureId 의 Class.Tool 현재 Tool 에 의해 equipped 에 의해 장착된 도구를 반환합니다. 또는 1> nil1>


반환

도구의 TextureId에서 콘텐츠 문자열을 가져오거나 없으면 null입니다.

SetDescription

void

설명 을 사용하면 사용자가 지정한 동작에 대한 설명이 BindAction 로 설정됩니다. 사용 가능한 동작 목록에서 이것은 지정된 액션대한 텍스트입니다.

이 메서드의 이름은 이 메서드가 만들기 버튼의 가족에 관련되어 있음을 나타낼 수 있지만, 이 메서드는 버튼에 영향을 주지 않습니다. 이 메서드는 단순히 텍스트 설명을 설정하고 그 이상입니다.

매개 변수

actionName: string

이 동작의 이전에 바인딩 동작에 대한 이름입니다.

description: string

자동차의 경적을 울리거나 인벤토리를 열처럼 작동 액션텍스트로 표시합니다.


반환

void

코드 샘플

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

이 메서드는 BindAction() 에 의해 생성된 터치 버튼에 표시된 이미지를 설정합니다. 특히, ImageLabel.Image 속성의

이 함수는 액션의 터치 버튼을 사용자 정의하는 메서드의 가족에 속합니다. 다른 이 가족에는 SetPositionSetTitle가 포함됩니다.

매개 변수

actionName: string

이 동작의 이전에 바인딩 동작에 대한 이름입니다.

image: string

이미지 속성에 설정할 값입니다.


반환

void

코드 샘플

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

이 메서드는 BindAction() 에 의해 생성된 터치 버튼의 위치를 설정합니다. 특히, GuiObject.Position 속성의 ImageButton 가 반환하는 경우에 해당되

이 함수는 액션의 터치 버튼을 사용자 정의하는 메서드의 가족에 속합니다. 다른 이 가족에는 SetImageSetTitle가 포함됩니다.

매개 변수

actionName: string

이 동작의 이전에 바인딩 동작에 대한 이름입니다.

position: UDim2

컨텍스트 버튼 프레임 내의 위치.


반환

void

코드 샘플

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 는 생성된 BindAction 의 텍스트를 설정합니다. 특히, 이것은 TextLabel.Text 내의 TextLabel 속성을 설정합니다.

이 함수는 액션의 터치 버튼을 사용자 정의하는 메서드의 가족에 속합니다. 다른 이 가족에는 SetImageSetPosition가 포함됩니다.

매개 변수

actionName: string

이 동작의 이전에 바인딩 동작에 대한 이름입니다.

title: string

버튼에 표시할 텍스트입니다.


반환

void

코드 샘플

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는 사용자 입력의 이름으로 액션을 해제하므로 액션 처리기 함수가 더 이상 해당않습니다. 일부 액션의 컨텍스트가 더 이상 적용되지 않도록 하려면 이 함수를 호출하십시오. 이 함수를 호출하면

이 함수 제공된 문자열과 관련된 액션이 없는 경우에도 오류가 발생하지 않습니다. 사용 GetAllBoundActionInfo 또는 개발자 콘솔의 "액션 바인딩" 탭을 사용하여 현재 바인딩된 액션을 확인할 수 있습니다.

매개 변수

actionName: string

반환

void

코드 샘플

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는 Class.Tool (또는 Class.HopperBin)를 활성화하는 데 사용되는 Class.KeyCode 를 바인딩 해제합니다. 이 함수는 기본적으로 해당 함수를 실행하는 작업을 취소합니다.

매개 변수

userInputTypeForActivation: Enum.UserInputType

이전에 BindActivate에 보냈던 동일한 사용자 입력 유형입니다.

keyCodeForActivation: Enum.KeyCode

BindActivate에 처음 보내었던 동일한 KeyCode입니다.

기본값: "Unknown"

반환

void

UnbindAllActions

void

모든 함수를 바인딩 해제합니다. 모든 액션 이름은 유지됩니다. 모든 터치 버튼이 제거됩니다. 버튼을 수동으로 조작한 경우 클리어가 보장되지 않습니다.


반환

void

GetButton

생성

GetButton 는 ImageButton 을 반환합니다. 이 함수는 BindAction 에 의해 생성되었으며 장치가 TouchEnabled 인 경우에만 해당됩니다. 이 함수의 유일한 매개 변수는 원래 액션을 BindAction에 전송할 때

이러한 작업이 바인딩되지 않거나 버튼이 생성되지 않은 경우 이 함수는 nil 을 반환합니다.

매개 변수

actionName: string

이 동작의 이전에 바인딩 동작에 대한 이름입니다.


반환

BindAction에 의해 만든 이미지 버튼입니다.

이벤트

LocalToolEquipped

현재 플레이어가 Tool 를 장착할 때 화재됩니다.

매개 변수

toolEquipped: Instance

LocalToolUnequipped

현재 플레이어가 Tool를 해제하면 화재가 발생합니다.

매개 변수

toolUnequipped: Instance