Kelas Engine
ContextActionService
*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.
Rangkuman
Metode
BindAction(actionName: string,functionToBind: function,createTouchButton: boolean,inputTypes: Tuple):() |
BindActionToInputTypes(actionName: string,functionToBind: function,createTouchButton: boolean,inputTypes: Tuple):() |
BindActivate(userInputTypeForActivation: Enum.UserInputType,keyCodesForActivation: Tuple):() |
GetBoundActionInfo(actionName: string):Dictionary |
SetDescription(actionName: string,description: string):() |
SetPosition(actionName: string,position: UDim2):() |
UnbindAction(actionName: string):() |
UnbindActivate(userInputTypeForActivation: Enum.UserInputType,keyCodeForActivation: Enum.KeyCode):() |
UnbindAllActions():() |
Acara
LocalToolEquipped(toolEquipped: Instance):RBXScriptSignal |
LocalToolUnequipped(toolUnequipped: Instance):RBXScriptSignal |
Contoh Kode
Alat Layanan Aksi Konteks 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("Memuat ulang!")
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)Referensi API
Metode
BindAction
Memberikan nilai
()
Contoh Kode
Alat Layanan Aksi Konteks 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("Memuat ulang!")
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)Pengendali Aksi Umum
local ContextActionService = game:GetService("ContextActionService")
local function handleAction(actionName, inputState, inputObj)
if inputState == Enum.UserInputState.Begin then
print("Menangani aksi: " .. actionName)
print(inputObj.UserInputType)
end
-- Karena fungsi ini tidak mengembalikan apapun, pengendali ini akan
-- "menenggelamkan" input dan tidak ada pengendali aksi lain yang akan
-- dipanggil setelah yang ini.
end
ContextActionService:BindAction("BoundAction", handleAction, false, Enum.KeyCode.F)Penangan Aksi Bertumpuk
local ContextActionService = game:GetService("ContextActionService")
-- Mendefinisikan penangan aksi untuk FirstAction
local function actionHandlerOne(actionName, inputState, _inputObj)
if inputState == Enum.UserInputState.Begin then
print("Penangan Aksi Satu: " .. actionName)
end
-- Penangan aksi ini mengembalikan nil, jadi diasumsikan bahwa
-- itu menangani aksi dengan benar.
end
-- Mengikat aksi FirstAction (itu di bagian bawah tumpukan)
ContextActionService:BindAction("FirstAction", actionHandlerOne, false, Enum.KeyCode.Z, Enum.KeyCode.X, Enum.KeyCode.C)
-- Mendefinisikan penangan aksi untuk SecondAction
local function actionHandlerTwo(actionName, inputState, inputObj)
if inputState == Enum.UserInputState.Begin then
print("Penangan Aksi Dua: " .. actionName)
end
if inputObj.KeyCode == Enum.KeyCode.X then
return Enum.ContextActionResult.Pass
else
-- Mengembalikan nil secara implisit Menenggelamkan masukan
return Enum.ContextActionResult.Sink
end
end
-- Mengikat SecondAction di atas aksi pertama (karena diikat lebih baru, itu di bagian atas tumpukan)
-- Catatan bahwa SecondAction menggunakan kunci yang sama seperti
ContextActionService:BindAction("SecondAction", actionHandlerTwo, false, Enum.KeyCode.Z, Enum.KeyCode.X)BindActionAtPriority
Memberikan nilai
()
Contoh Kode
Prioritas BindAction ContextActionService
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(`Aksi [{actionName}] terjadi. KeyCode [{inputObject.KeyCode}] ditekan.`)
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(`Aksi [{actionName}] terjadi. KeyCode [{inputObject.KeyCode}] ditekan.`)
return Enum.ContextActionResult.Sink
end
-- Tanpa menentukan prioritas, aksi yang terakhir diikat akan dipanggil terlebih dahulu,
-- jadi menekan INPUT_KEY1 mencetak "Pukul" dan kemudian menyerap input.
ContextActionService:BindAction("DefaultThrow", handleThrow, false, INPUT_KEY1)
ContextActionService:BindAction("DefaultPunch", handlePunch, false, INPUT_KEY1)
-- Di sini kita mengikat kedua fungsi dengan urutan yang sama seperti di atas, tetapi dengan prioritas yang ditukar secara eksplisit.
-- Yaitu, kita memberikan "Throw" prioritas yang lebih tinggi yaitu 2 sehingga akan dipanggil terlebih dahulu,
-- meskipun "Punch" masih diikat lebih baru.
-- Menekan INPUT_KEY2 mencetak "Lempar" dan kemudian menyerap input.
ContextActionService:BindActionAtPriority("PriorityThrow", handleThrow, false, 2, INPUT_KEY2)
ContextActionService:BindActionAtPriority("PriorityPunch", handlePunch, false, 1, INPUT_KEY2)BindActionToInputTypes
BindActivate
ContextActionService:BindActivate(
):()
Parameter
Memberikan nilai
()
GetAllBoundActionInfo
GetBoundActionInfo
Parameter
Memberikan nilai
GetButton
SetDescription
Memberikan nilai
()
Contoh Kode
Tombol Sentuh ContextActionService
local ContextActionService = game:GetService("ContextActionService")
local ACTION_INSPECT = "Inspect"
local INPUT_INSPECT = Enum.KeyCode.E
local IMAGE_INSPECT = "rbxassetid://1826746856" -- Gambar gelembung bicara dengan ? di dalamnya
local function handleAction(actionName, inputState, _inputObject)
if actionName == ACTION_INSPECT and inputState == Enum.UserInputState.End then
print("Memeriksa")
end
end
-- Untuk perangkat sentuh, tombol dibuat di layar secara otomatis melalui parameter ke-3
ContextActionService:BindAction(ACTION_INSPECT, handleAction, true, INPUT_INSPECT)
-- Kita dapat menggunakan fungsi-fungsi ini untuk menyesuaikan tombol:
ContextActionService:SetImage(ACTION_INSPECT, IMAGE_INSPECT)
ContextActionService:SetTitle(ACTION_INSPECT, "Lihat")
ContextActionService:SetDescription(ACTION_INSPECT, "Periksa sesuatu.")
ContextActionService:SetPosition(ACTION_INSPECT, UDim2.new(0, 0, 0, 0))
-- Kita dapat memanipulasi tombol secara langsung menggunakan ContextActionService:GetButton
local imgButton = ContextActionService:GetButton(ACTION_INSPECT)
if imgButton then -- Ingat: perangkat non-sentuh tidak akan mengembalikan apapun!
imgButton.ImageColor3 = Color3.new(0.5, 1, 0.5) -- Mewarnai ImageButton menjadi hijau
endSetImage
Memberikan nilai
()
Contoh Kode
Tombol Sentuh ContextActionService
local ContextActionService = game:GetService("ContextActionService")
local ACTION_INSPECT = "Inspect"
local INPUT_INSPECT = Enum.KeyCode.E
local IMAGE_INSPECT = "rbxassetid://1826746856" -- Gambar gelembung bicara dengan ? di dalamnya
local function handleAction(actionName, inputState, _inputObject)
if actionName == ACTION_INSPECT and inputState == Enum.UserInputState.End then
print("Memeriksa")
end
end
-- Untuk perangkat sentuh, tombol dibuat di layar secara otomatis melalui parameter ke-3
ContextActionService:BindAction(ACTION_INSPECT, handleAction, true, INPUT_INSPECT)
-- Kita dapat menggunakan fungsi-fungsi ini untuk menyesuaikan tombol:
ContextActionService:SetImage(ACTION_INSPECT, IMAGE_INSPECT)
ContextActionService:SetTitle(ACTION_INSPECT, "Lihat")
ContextActionService:SetDescription(ACTION_INSPECT, "Periksa sesuatu.")
ContextActionService:SetPosition(ACTION_INSPECT, UDim2.new(0, 0, 0, 0))
-- Kita dapat memanipulasi tombol secara langsung menggunakan ContextActionService:GetButton
local imgButton = ContextActionService:GetButton(ACTION_INSPECT)
if imgButton then -- Ingat: perangkat non-sentuh tidak akan mengembalikan apapun!
imgButton.ImageColor3 = Color3.new(0.5, 1, 0.5) -- Mewarnai ImageButton menjadi hijau
endSetPosition
Memberikan nilai
()
Contoh Kode
Tombol Sentuh ContextActionService
local ContextActionService = game:GetService("ContextActionService")
local ACTION_INSPECT = "Inspect"
local INPUT_INSPECT = Enum.KeyCode.E
local IMAGE_INSPECT = "rbxassetid://1826746856" -- Gambar gelembung bicara dengan ? di dalamnya
local function handleAction(actionName, inputState, _inputObject)
if actionName == ACTION_INSPECT and inputState == Enum.UserInputState.End then
print("Memeriksa")
end
end
-- Untuk perangkat sentuh, tombol dibuat di layar secara otomatis melalui parameter ke-3
ContextActionService:BindAction(ACTION_INSPECT, handleAction, true, INPUT_INSPECT)
-- Kita dapat menggunakan fungsi-fungsi ini untuk menyesuaikan tombol:
ContextActionService:SetImage(ACTION_INSPECT, IMAGE_INSPECT)
ContextActionService:SetTitle(ACTION_INSPECT, "Lihat")
ContextActionService:SetDescription(ACTION_INSPECT, "Periksa sesuatu.")
ContextActionService:SetPosition(ACTION_INSPECT, UDim2.new(0, 0, 0, 0))
-- Kita dapat memanipulasi tombol secara langsung menggunakan ContextActionService:GetButton
local imgButton = ContextActionService:GetButton(ACTION_INSPECT)
if imgButton then -- Ingat: perangkat non-sentuh tidak akan mengembalikan apapun!
imgButton.ImageColor3 = Color3.new(0.5, 1, 0.5) -- Mewarnai ImageButton menjadi hijau
endSetTitle
Memberikan nilai
()
Contoh Kode
Tombol Sentuh ContextActionService
local ContextActionService = game:GetService("ContextActionService")
local ACTION_INSPECT = "Inspect"
local INPUT_INSPECT = Enum.KeyCode.E
local IMAGE_INSPECT = "rbxassetid://1826746856" -- Gambar gelembung bicara dengan ? di dalamnya
local function handleAction(actionName, inputState, _inputObject)
if actionName == ACTION_INSPECT and inputState == Enum.UserInputState.End then
print("Memeriksa")
end
end
-- Untuk perangkat sentuh, tombol dibuat di layar secara otomatis melalui parameter ke-3
ContextActionService:BindAction(ACTION_INSPECT, handleAction, true, INPUT_INSPECT)
-- Kita dapat menggunakan fungsi-fungsi ini untuk menyesuaikan tombol:
ContextActionService:SetImage(ACTION_INSPECT, IMAGE_INSPECT)
ContextActionService:SetTitle(ACTION_INSPECT, "Lihat")
ContextActionService:SetDescription(ACTION_INSPECT, "Periksa sesuatu.")
ContextActionService:SetPosition(ACTION_INSPECT, UDim2.new(0, 0, 0, 0))
-- Kita dapat memanipulasi tombol secara langsung menggunakan ContextActionService:GetButton
local imgButton = ContextActionService:GetButton(ACTION_INSPECT)
if imgButton then -- Ingat: perangkat non-sentuh tidak akan mengembalikan apapun!
imgButton.ImageColor3 = Color3.new(0.5, 1, 0.5) -- Mewarnai ImageButton menjadi hijau
endUnbindAction
Parameter
Memberikan nilai
()
Contoh Kode
Alat Layanan Aksi Konteks 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("Memuat ulang!")
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
ContextActionService:UnbindActivate(
):()
Parameter
| Nilai Default: "Unknown" |
Memberikan nilai
()
UnbindAllActions
ContextActionService:UnbindAllActions():()
Memberikan nilai
()
Acara
LocalToolEquipped
Parameter
LocalToolUnequipped
Parameter