每個遊戲都需要接收用戶輸入,以便玩家與其環境互動和查看。Roblox 支持幾乎所有形式的輸入,包括 滑鼠/鍵盤、觸控、遊戲手柄 和 VR。
跨平台輸入
Roblox 本質上是 跨平台 的,因為玩家可以在其手機或平板電腦上發現並加入遊戲,然後在 PC 或控制台上繼續未完成的遊戲。因此,輸入在您的跨平台開發計劃中尤為重要。
為了簡化這個過程,Roblox 提供了 輸入動作系統,用於定義動作,例如「跳躍」、「衝刺」或「射擊」,並為多種硬體輸入設置綁定來驅動這些動作。這讓您不必考慮所有硬體輸入的技術細節,僅需定義哪些輸入能執行哪些動作。

輸入類型檢測
在跨平台開發中,確定並響應玩家使用的主要輸入類型是重要的,通常是為了確保 UI 元素 如螢幕上的按鈕和菜單能在各種設備上良好運行。
例如,觸控啟用的設備假設觸控是默認輸入,並且可能會出現觸控按鈕來進行動作,但如果玩家連接了額外的藍牙鍵盤/滑鼠或遊戲手柄,則可以假設他們希望將其切換為主要輸入類型,並可能使用觸控作為螢幕 UI 的備用輸入。只讀的 UserInputService.PreferredInput 屬性是一種方便的方法,可以根據預期的玩家行為測試並適應多種設備類型中的多個輸入類型。
PreferredInput 的值隨著內建設備輸入和玩家最近與連接的遊戲手柄或鍵盤/滑鼠的互動而變化。示例包括:
| 真實世界場景 | PreferredInput |
|---|---|
| 玩家正在使用沒有其他連接輸入設備的手機;輸入類型無法更改。 | Touch |
| 玩家正在使用一個連接了藍牙鍵盤和滑鼠的移動設備,但沒有連接遊戲手柄。 | KeyboardAndMouse |
| 玩家正在使用一個連接了藍牙遊戲手柄的平板電腦,但沒有連接鍵盤或滑鼠。 | Gamepad |
| 玩家在連接了藍牙鍵盤和滑鼠的 Xbox 或 PlayStation 上,最近與鍵盤或滑鼠互動。 | KeyboardAndMouse |
| 玩家在連接了遊戲手柄的 Windows 或 Mac PC 上,最近與遊戲手柄互動。 | Gamepad |
以下的 LocalScript 是一個範本,用於初步檢測首選輸入並在遊戲過程中響應變化。
首選輸入檢測
local UserInputService = game:GetService("UserInputService")
local function preferredInputChanged()
local preferredInput = UserInputService.PreferredInput
if preferredInput == Enum.PreferredInput.Touch then
-- 玩家在沒有其他可用/連接輸入類型的觸控設備上
print("觸控")
elseif preferredInput == Enum.PreferredInput.Gamepad then
-- 玩家已連接或最近與遊戲手柄互動
print("遊戲手柄")
elseif preferredInput == Enum.PreferredInput.KeyboardAndMouse then
-- 玩家已連接或最近與鍵盤或滑鼠互動
print("鍵盤和滑鼠")
end
end
preferredInputChanged()
UserInputService:GetPropertyChangedSignal("PreferredInput"):Connect(function()
preferredInputChanged()
end)
預設綁定
Roblox 提供了默認的輸入綁定,以用於移動、相機控制和基本環境互動 — Roblox 玩家對這些控制非常熟悉,因此您僅應在特定情況下覆蓋它們。還要注意,保留的輸入無法被覆蓋,並將始終按照其預期目的運作。
| 動作 | 鼠標/鍵盤 | 遊戲手把 | 觸控 |
|---|---|---|---|
| 打開 Roblox 菜單 | Esc | 開始 按鈕 (ButtonStart) | 不適用 |
| 開發者控制台 | F9 | 不適用 | 不適用 |
| 全螢幕模式 (Windows) 顯示桌面 (Mac) | F11 | 不適用 | 不適用 |
| 錄製視頻 (Windows) | F12 | 不適用 | 不適用 |
| 截取屏幕 | PrintScreen | 不適用 | 不適用 |