ContextActionService

Artık kullanılmayanları göster

*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.

Oluşturulamaz
Hizmet

Kullanıcının yalnızca yakınında bulunduğu durumlarda

Konu ve Eylem

Bir kapsayıcı bir Tool şu anda bir oyuncunun bir aksiyonyapmasına izin veren bir koşul. Birkaç örnek i

Bir eylem basitç

Eylemleri Konteynerle Bağla

Çoğu durumda,

Sınırlı Eylemleri Kontrol

Eylemlerin ve bağlantıların listesini görmek için, "Eylem Bağlantıları" birimini (F9'da oyun içinde) inceleyebilirsiniz. Bu

Klavye Dışındaki Giriş

Bu hizmet, özellikle oyun aracı ve dokunmatik giriş için desteklemek için kullanışlıdır. Oyun aracı için dokunmatik giriş için, kullanıcı başka bir menüye

Kod Örnekleri

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)

Özet

Yöntemler

Etkinlikler

Özellikler

Yöntemler

BindAction

void

Bir eylemi kullanıcının eylem işleme işlevine bağ

Aşağıdaki kod örneği, bir Sound ın bir tuşu (played), oyun padı düğmesi veya dokunmatik ekran düğmesi basılırken nasıl oynanabileceğini gösteriyor.


local ContextActionService = game:GetService("ContextActionService")
-- Bir araba boynuz sesi
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
-- Oyuncu araçta oturduğunda:
ContextActionService:BindAction("HonkHorn", handleAction, true, Enum.KeyCode.H, Enum.KeyCode.ButtonY)
-- Oyuncu dışarı çıktığında:
ContextActionService:UnbindAction("HonkHorn")

Eylem İşleyici Parçaları

Eylem işleyicisi işlevleri aşağıdaki parametrelerle çağrılır:


<tr>
<td>1</td>
<td><code>strungu</code></td>
<td>Eskiden BindAction'a verilen aynı yazılış</td>
</tr>
<tr>
<td>2</td>
<td><code>Entrüman.KullanıcıGirişiDevleti</code></td>
<td>Girişin durumu (Başla, Değiştir, Sona Er veya İptal)\*</td>
</tr>
<tr>
<td>3</td>
<td><code>GirişNesnesi</code></td>
<td>Giriş hakkında bilgi içeren bir nesne (varsayılan bağlantıya göre UserInputType'a bağlı olarak değişir)</td>
</tr>
#TürAçıklama

° Bu, bir işlevin birden fazla eylemi bir anda işleyebilmesini sağlar, gerekirse. *Cancel, bir eylem işlemesi devam ediyorsa veya başka bir eylem bağlandıysa, işlem bağlanmışsa iptal edilir.° Bu, bir işlevin birden fazla eylemi bir anda işleyebilmesini sağlar, gerekirse. *Cancel, bir işlemesi devam ediyorsa veya başka bir eylem bağlandıysa, işlem

Eylem Bağlantıları Yığını

Eylem

Dokunmatik Düğmelere

Giriş tipi dışında, bu işlevin üçüncü parametre kontrolü, bir düğme'nin

Parametreler

actionName: string

Yapılacak eylemi temsil eden bir yol (örneğin "HonkHorn" veya "OpenDoor").

functionToBind: function

Eylem işleme işlevi, bağlantı girişleri başlatıldığında aşağıdaki parametrelerle çağrılır: string (actionName), Enum.UserInputState ve bir InputObject.

createTouchButton: bool

Dokunmatik giriş cihazları için eylem için bir GUI düğmesi oluşturulmalı mıdır.

inputTypes: Tuple

Eyleme bağlanan girdilerin herhangi bir sayısı. Amount.Code veya Enum.UserInputType


Dönüşler

void

Kod Örnekleri

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 gibi davranır, ancak ayrıca bağlanan aksiyonbir öncelik atanabilir. Eğer eylemlerin bağlandığı sırayla düzenlenmişse, yüksek öncelik işlevi BindAction'ın normal "stacks" davranışını geçersiz kılar. Diğer bir deyişle, bu işlev BindAction'ı

Parametreler

actionName: string

Yapılacak eylemi temsil eden bir yol (örneğin "HonkHorn" veya "OpenDoor").

functionToBind: function

Eylem işleme işlevi, bağlantı girişleri başlatıldığında aşağıdaki parametrelerle çağrılır: string (actionName), Enum.UserInputState ve bir InputObject.

createTouchButton: bool

Dokunmatik giriş cihazları için eylem için bir GUI düğmesi oluşturulmalı mıdır.

priorityLevel: number

Eylemin bağlanması gereken öncelik seviyesi (daha düşük seviyede daha yüksek düşünülür).

inputTypes: Tuple

aksiyonbağlanacak girdileri temsil eden herhangi bir sayıda Enum.KeyCode veya Enum.UserInputType.


Dönüşler

void

Kod Örnekleri

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

Bir Enum.KeyCode bağlayıcıyı kullanarak bir Enum.UserInputType ile etkinleştirilen ClickDetector etkinliğini etkinleştirir. Bu

Not edin ki Enum.UserInputType belirleneninin Keyboard veya Gamepad1 ile iletişim kurduğu 1> Gamepad81> aracılığıyla geçerli olması gerekir.

Parametreler

userInputTypeForActivation: Enum.UserInputType

Gamepad8'den Keyboard veya Gamepad1 olmalıdır.

keyCodesForActivation: Tuple

Dönüşler

void

GetAllBoundActionInfo

GetAllBindActioninfo, tüm eylemlerin isimlerini (sorunluk olarak Class.ContextActionService:BindAction()|BindAction) haritasını içeren bir tabloyu Class.ContextActionService:GetBoundActionInfo()|GetBoundActionInfo) çağrıldığında Class.ContextActionService:GetBindActionInfo()|GetBoundActionInfo ile birlikte içeriyor.


Dönüşler

GetBoundActionInfo

GetBoundActionInfo, ismini belirten bağlantı eylemiyle ilgili aşağıdaki anahtarları içeren bir tabloyu döndürür. Tüm eylemler için aynı bilgiyi birden fazla almak için şunları kullanın: GetAllBoundActionInfo .


<tr>
<td><code>stackOrder</code></td>
<td>sayı</td>
<td>
Eylemin oluğundaki eylem indeksini açıklar (artırıyor)
</td>
</tr>
<tr>
<td><code>öncelikSeviyesi</code> \*</td>
<td>sayı</td>
<td>
Eylemin <code>Class.ContextActionService:BindActionAtPriority()|öncelik</code> seviyesini açıklar
</td>
</tr>
<tr>
<td><code>touchButton oluştur</code></td>
<td>boolean</td>
<td>
Class.UserInputService.TouchEnabled|TouchEnabled cihazlarında dokunmatik düğme oluşturulup oluşturulmadığını açıklar
</td>
</tr>
<tr>
<td><code>输入类型</code></td>
<td>masa</td>
<td>
Bu eylemi başlatmak için <code>Class.ContextActionService:BindAction()|BindAction</code> ile geçen giriş tipi
</td>
</tr>
<tr>
<td><code>açıklama</code> ^</td>
<td>dizi</td>
<td>
Eylem setinin açıklaması <code>Class.ContextActionService:SetDescription()|SetDescription</code> tarafından ayarlanır
</td>
</tr>
<tr>
<td><code>unvan</code> ^</td>
<td>dizi</td>
<td>
Eylem setinin <code>Class.ContextActionService:SetTitle()|SetTitle</code>
</td>
</tr>
<tr>
<td><code>görüntü</code> †</td>
<td>dizi</td>
<td>
aksiyondokunmatik düğmesinin ekran görüntüsü <code>Class.ContextActionService:SetImage()|SetImage</code> tarafından ayarlanır
</td>
</tr>
İsimTürAçıklama

Görünüm olarak kullanılmazsa bile öncelik seviyesi hala dahil edilir - varsayılan olarak 2000'dir.

° Ayrıntılı yöntem çağrılmadığında bu alanın nil olacağını gösterir.

Parametreler

actionName: string

Dönüşler

GetCurrentLocalToolIcon

GetCurrentLocalToolIcon şu anda BackpackItem.TextureId olan Tool ile iletişim kurar veya equipped eğer öyle bir Alet veya oyuncu eksikse 2>Class.Player2> ile iletişim kurar.


Dönüşler

Araç'ın TextureId'inden bir içerik kaydırma yoksa, biri bulamadıysa.

SetDescription

void

SetDescription, BindAction ile bağlantılı eylemin açıklamasını ayarlar. Bir listede mevcut eylemlerin açıklaması, verilen aksiyonaçıklayan metin olur.

İsmi, bu yöntemin bir düğmeyi oluşturan işlevlerin ailesine ilişkin olduğunu gösterebilir ( SetTitle , SetImage ve SetPosition ). Bu

Parametreler

actionName: string

Eylemin orijinal olarak BindAction'a verilen adı.

description: string

Eylemin bir metin açıklaması, "Arabanın kornasını çal" veya "envanteraç" gibi.


Dönüşler

void

Kod Örnekleri

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

Bu yöntem, BindAction() tarafından oluşturulan dokunmatik düğme görüntüsünü ayarlar. Özellikle, ImageLabel.Image ö

Bu işlev, aksiyondokunmatik düğmesinin etkinleştirilmesinde kullanılan bir dizi yöntemin bir parçasıdır. Bu ailenin diğer üyeleri aşağıda listelenmiştir. SetPosition ve SetTitle .

Parametreler

actionName: string

Eylemin orijinal olarak BindAction'a verilen adı.

image: string

Görüntü özelliğinin ayarlanacağı değer.


Dönüşler

void

Kod Örnekleri

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

Bu yöntem, BindAction() tarafından oluşturulan bir dokunmatik düğmenin pozisyonunu ayarlar. Özellikle, GuiObject.Position özelliğini, ImageButton 'in oluştur

Bu işlev, aksiyondokunmatik düğmesini özelleştiren bir dizi metodun bir parçasıdır. Bu ailenin diğer üyeleri aşağıda belirtilmiştir. SetImage ve SetTitle .

Parametreler

actionName: string

Eylemin orijinal olarak BindAction'a verilen adı.

position: UDim2

Konuşma Kutusu'nun içindeki pozisyon.


Dönüşler

void

Kod Örnekleri

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 özelliğini TextLabel.Text içindeki TextLabel özelliğini belirtir. Özellikle, bu, 1>Class.TextLabel1> içindeki

Bu işlev, aksiyondokunmatik düğmesini özelleştiren bir dizi metodun bir parçasıdır. Bu ailenin diğer üyeleri aşağıda belirtilmiştir SetImage ve SetPosition .

Parametreler

actionName: string

Eylemin orijinal olarak BindAction'a verilen adı.

title: string

Butonun gösterileceği yazı.


Dönüşler

void

Kod Örnekleri

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, kullanıcı girdilerinden isim olarak bir eylemi yeniden bağlayacak, böylece eylem elleyici işlevi artık uygulanabilir. Kullanıcı arayüzünü kapatmak gibi bazı eylemlerin iç konteynerini yeniden bağlayın veya Class.Tool.Unequ

Bu işlev olmazsa bir hata atmaz verilen yol bağlantısıyla bağlanmış diziyoksa. GetAllBoundActionInfo veya Geliştirici Konsol'un "Eylem Bağlantıları" tabunda bulabilirsiniz hangi eylemler mevcut.

Parametreler

actionName: string

Dönüşler

void

Kod Örnekleri

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 unbind'leri bir Enum.KeyCode ile etkinleştirme için kullanılan bir Enum.UserInputType ile bağlantı keser. Bu işlev aslında bu işlevin yapılmasını sağlar. Bu işlevin yapılmasında yapılan eylemleri ger

Parametreler

userInputTypeForActivation: Enum.UserInputType

Eski UserInputType, BindActivate'a gönderildiği gibi gönderildi.

keyCodeForActivation: Enum.KeyCode

Eskiden BindActivate'a gönderilen aynı KeyCode.

Varsayılan değer: "Unknown"

Dönüşler

void

UnbindAllActions

void

Bağlanan tüm işlevler kaldırılır. Artık bir eylem adı kalmaz. Tüm dokunmatik düğmelere erişim kaldırılır. Eğer bir düğme manuel olarak değiştirilmişse, temizlenmesi garanti edilmez.


Dönüşler

void

GetButton

Bekletir

GetButton, ImageButton を oluşturduğu BindAction ile birlikte geri çağırır, eğer cihazın üçüncü parametresi doğruysa ve cihaz TouchEnabled ise. Bu işlevin tek parametri, aksiyonun orijinal olarak BindAction'a g

Eğer böyle bir eylem bağlanmadıysa veya düğme oluşturulmadıysa, bu işlev nil döndürür.

Parametreler

actionName: string

Eylemin orijinal olarak BindAction'a verilen adı.


Dönüşler

BindAction tarafından oluşturulan bir ImageButton.

Etkinlikler

LocalToolEquipped

Mevcut oyuncu bir Tool kullanırken ateş eder.

Parametreler

toolEquipped: Instance

LocalToolUnequipped

Mevcut oyuncu bir Tool ı çıkarırken ateş eder.

Parametreler

toolUnequipped: Instance