滑鼠和鍵盤輸入

*此內容是使用 AI(Beta 測試版)翻譯,可能含有錯誤。若要以英文檢視此頁面,請按一下這裡

大部分 Roblox 會話在使用滑鼠和鍵盤的裝置上播放,因此在設計廣泛受眾體驗時,支持這些輸入是很重要的。一旦您對滑鼠和鍵盤輸入感到舒適,就通過設置 手機遊戲控制器 輸入來使體驗在多個平台上兼容。

為了方便,Roblox將最常見的滑鼠和鍵盤輸入設為預設綁定,其中除了保留的綁定外,您都可以覆蓋。

一般滑鼠輸入

像所有裝置輸入一樣,您可以使用 UserInputService 來捕捉鼠標輸入。此服務提供一種可擴展的方法來捕捉輸入變更和裝置輸入狀態,以一次捕捉多個裝置的輸入變更。Roblox 也支持舊版本滑鼠輸入偵測,使用 PlayerMouseClickDetectors

此外,您可以使用 ContextActionService 來處理單個輸入上的多個操作,根據上下文來執行,例如在岩石附近使用工具,或在建造築物內開啟門。請參閱上下文依賴輸入以獲得關於設置上下文特定輸入行動的信息。

以下 LocalScript ,當放置在 StarterPlayerScripts 中時,會捕捉鼠標點擊並將鼠標位置輸出到 輸出窗口

本地腳本 - 輸出滑鼠點擊和位置

local UserInputService = game:GetService("UserInputService")
local function onInputEnded(inputObject, processedEvent)
-- 首先檢查「処理事件」是否為真值
-- 這表示另一個腳本已經處理了輸入,因此此腳本被忽略
if processedEvent then return end
-- 接下來,檢查輸入是否是滑鼠事件
if inputObject.UserInputType == Enum.UserInputType.MouseButton1 then
print("Left Mouse button was pressed:", inputObject.Position)
elseif inputObject.UserInputType == Enum.UserInputType.MouseButton2 then
print("Right Mouse button was pressed:", inputObject.Position)
end
end
UserInputService.InputEnded:Connect(onInputEnded)

一般鍵盤輸入

若要存取鍵盤事件,請使用 UserInputService.InputEnded 事件來跟蹤鍵輸入或其他輸入結束時間。與 滑鼠 事件相似,此事件只能在 LocalScript 內工作。

以下 ,當放置在 中時,會將按下的鍵的 印刷到 輸出窗口:


local UserInputService = game:GetService("UserInputService")
local function onInputEnded(inputObject, processedEvent)
-- 首先檢查「処理事件」是否為真值
-- 這表示另一個腳本已經處理了輸入,因此此腳本被忽略。
if processedEvent then return end
-- 接下來,檢查輸入是否是鍵盤事件
if inputObject.UserInputType == Enum.UserInputType.Keyboard then
print("A key was released: " .. inputObject.KeyCode.Name)
end
end
UserInputService.InputEnded:Connect(onInputEnded)

介面輸入

滑鼠和鍵盤輸入會自動與互動用戶介面元素,例如 TextButtonsImageButtons 以及 TextBoxes 一起工作,這些元素會捕捉像字段一樣的文字輸入。

有關創建按鈕和文字輸入對象的更多信息,請參閱 按鈕文字輸入

角色移動模式

您可以通過變更 StarterPlayer.DevComputerMovementMode 值來設置 Roblox 體驗的滑鼠和鍵盤移動控制方案追蹤中

選項說明
使用者選擇 讓使用者從體驗內的選單中選擇他們想要的控制模式。此選項預設為啟用。
鍵盤滑鼠 使用者可以按下 W A S D 來移動和 Space 跳躍。這是鍵盤和滑鼠用戶的預設設定,用於 使用者選擇 設定。
點擊以移動 使用者只能透過右鍵單擊目標位置來移動體驗。
可執行的 停用所有預設控件,並允許您 綁定自己的控件

滑鼠圖示

您可以在體驗中自訂使用者的滑鼠圖示的外觀和行為,以在所有的介面元素上創建一致的風格。這包括在特定情況下暫時變更使用者的滑鼠圖示,例如懸停在按鈕上。

變更圖示

您可以在 中變更使用者的滑鼠圖示,設置 屬性為自訂 Roblox 資產 ID。例如,下列 LocalScript 將使用者的預設滑鼠圖示變更為圓形,中間有一個藍色點:


local UserInputService = game:GetService("UserInputService")
UserInputService.MouseIcon = "rbxassetid://3400146391"

隱藏圖示

您可以在 UserInputService.MouseIconEnabled 中設置用戶的滑鼠圖示為 false ,以在 LocalScript 中隱藏用戶的滑鼠圖示。例如,下面的代碼會在每兩秒切換鼠標圖示從可見到不可見,然後返回:


local UserInputService = game:GetService("UserInputService")
while true do
task.wait(2)
UserInputService.MouseIconEnabled = false
task.wait(2)
UserInputService.MouseIconEnabled = true
end

鎖定圖示

您可以使用 UserInputService.MouseBehavior 將鼠標圖示位置鎖定在屏幕上,然後使用 Enum.MouseBehaviorLockCurrentPositionLockCenter 將其再次解鎖,或使用 Default 值將其再次解鎖。

如果使用者的滑鼠圖示被鎖定在一個位置,UserInputService.InputChanged仍然會在使用者移動滑鼠時發射,傳送滑鼠移動的距離。例如,下面的代碼樣本在一秒鐘後鎖定使用者的滑鼠圖示,然後 Studio 每當使用者移動滑鼠時都會列印滑鼠差異:


local UserInputService = game:GetService("UserInputService")
task.wait(5)
UserInputService.MouseBehavior = Enum.MouseBehavior.LockCurrentPosition
UserInputService.InputChanged:Connect(function(inputObject)
if inputObject.UserInputType == Enum.UserInputType.MouseMovement then
print("Mouse delta is (" .. tostring(inputObject.Delta.X) .. ", " .. tostring(inputObject.Delta.Y) .. ")")
end
end)

Roblox 預設綁定

Roblox 為所有體驗提供預設鍵綁定。這些是最常用於移動、攝影機控制和基本環境互動的輸入。除了保留的綁定外,您可以使用 ContextActionService 來創建跨平台綁定,將多個綁定優先給予單一行動作,如同在 上下文依賴輸入 中所述。

Enum.CoreGuiType 功能,例如 背包聊天 ,有一個列表額外輸入的默認值。您不能覆蓋保留輸入,例如 Esc (Roblox 菜單) 或 F9 (開發者控制台)。

這些綁定是 Roblox 預設值,但您可以使用自訂腳本覆蓋它們。大多數 Roblox 使用者熟悉這些控制件,因此您只應在特定情況下覆蓋它們。

輸入行動
W 前進
S 返回
A向左移動
D向右移動
Spacebar
旋轉相機向左或向右
右滑鼠按鈕 當按下時,拖動滑鼠將相機視圖移動
滑鼠滾輪 I O將相機放大或縮小
Shift如果 EnableMouseLockOption 已啟用,切換鼠標鎖定模式