Maus- und Tastatur-Eingang

*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.

Eine große Anzahl von Roblox-Sitzungen wird auf Geräten mit einer Maus und einer Tastatur gespielt, so ist es wichtig, diese Eingaben richtig zu unterstützen, wenn Sie ein Erlebnis für ein breites Publikum planen. Sobald Sie sich mit der Maus- und Tastatursteuerung wohlfühlen, machen Sie Ihr Erlebnis auf mehreren Plattformen kompatibel, indem Sie mobil und Gamepad-Eingänge einrichten.

Für Bequemlichkeit setzt Roblox die am häufigsten vorkommenden Maus- und Tastatur-Eingaben als Standard-Bindungen fest, die, mit Ausnahme der reservierten Bindungen, überschreiben Sie.

Allgemeine Mauseingabe

Wie alle Geräteeingaben können Sie Maus-Eingaben mit UserInputService erfassen. Dieser Dienst bietet eine skalierbare Möglichkeit, Eingangsschritte und Geräte-Eingangsstände für mehrere Geräte gleichzeitig zu erfassen. Roblox unterstützt auch die Legacy-Maus-Eingabe-Erkennung mit PlayerMouse und ClickDetectors

Darüber hinaus können Sie ContextActionService verwenden, um mehrere Aktionen auf einer einzigen Eingabe basierend auf dem Kontext zu behandeln, z. B. die Verwendung eines Werkzeugs in der Nähe eines Steins oder das Öffnen einer Tür in einem Bauen. Siehe Kontextabhängige Eingaben für Informationen über die Festlegung von Kontextspezifika-Eingaben.

Der folgende LocalScript, wenn er in StarterPlayerScripts platziert wird, erfährt Klicks auf die Maus und druckt die Mausposition in das Ausgabe-Fenster:

Lokales Skript - Ausgabe Mausklick und Position

local UserInputService = game:GetService("UserInputService")
local function onInputEnded(inputObject, processedEvent)
-- Prüfen Sie zuerst, ob das "verarbeitete Ereignis" wahr ist
-- Dies deutet daran, dass ein anderes Skript die Eingabe bereits verarbeitet hat, weshalb dieses ignoriert wird
if processedEvent then return end
-- Danach überprüfen Sie, dass die Eingabe ein Maus-Ereignis war
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)

Allgemeine Tastatur-Eingabe

Um Tastaturereignisse zuzugreifen, verwenden Sie das Ereignis UserInputService.InputEnded, um jedes Mal zu verfolgen, wenn ein beliebiger Keystroke oder andere Eingaben beendet sind. Ähnlich wie Maus-Ereignisse funktioniert dieses Ereignis nur innerhalb eines LocalScript.

Das folgende LocalScript, wenn es in StarterPlayerScripts platziert wird, druckt den Enum.KeyCode eines gedrückten Buttons in das 1> Ausgabe-Fenster:


local UserInputService = game:GetService("UserInputService")
local function onInputEnded(inputObject, processedEvent)
-- Prüfen Sie zuerst, ob das "verarbeitete Ereignis" wahr ist
-- Dies zeigt an, dass ein anderes Skript die Eingabe bereits verarbeitet hat, so dass dieses ignoriert wird.
if processedEvent then return end
-- Nächste Prüfung, ob die Eingabe ein Keyboard-Ereignis war
if inputObject.UserInputType == Enum.UserInputType.Keyboard then
print("A key was released: " .. inputObject.KeyCode.Name)
end
end
UserInputService.InputEnded:Connect(onInputEnded)

Eingabeaufforderung

Maus- und Tastatur-Eingaben funktionieren automatisch mit interaktiven UI-Elementen wie TextButtons und ImageButtons sowie mit TextBoxes, die Text-Eingaben wie ein Feld in einer Form erfassen.

For more information on creating buttons and text input objects, see Buttons and Text-Input .

Charakter-Bewegungsmodi

Du kannst Maus- und Tastatur-Bewegungssteuerelemente für Roblox-Erlebnisse einstellen, indem du die Werte von StarterPlayer.DevComputerMovementMode auf eines der gefolgte ProfileWerte einsetzt:

OptionBeschreibung
Benutzer-Auswahl Erlaubt Benutzern, ihr gewünschtes Kontrollsystem aus dem In-Experience-Menü auszuwählen. Diese Option wird standardmäßig aktiviert.
Tastatur-Maus Benutzer können WASD drücken, um sich zu bewegen und 1>Leertaste1> 4>zu springen. Dies ist die Standardeinstellung für Tastatur- und Maus-Benutzer für die 7>User Choice7>-Einstellung.
Klicken um zu verschieben Benutzer können nur durch einen Rechtsklick auf eine Ziel位ierung verschieben.
Skriptbar Deaktiviert alle Standardsteuerelemente und ermöglicht es Ihnen, Ihre eigenen Steuerelemente zu binden.

Maus-Symbole

Du kannst die Aussehen und Verhalten eines Benutzers Maus-Symbols innerhalb deines Erlebnisses anpassen, um einen konsistenten Stil über alle deine UI-Elemente zu erstellen. Dies beinhaltet die vorübergehende Änderung des Benutzers Maus-Symbols in bestimmten Situationen, wie z. B. über einen Knopf zu schweben.

Ändern des Icons

Sie können das Benutzer-Maus-Icon in einem LocalScript durch Festlegung der Eigenschaft MouseIcon in UserInputService auf eine benutzerdefinierte Roblox-Asset-ID ändern. Zum Beispiel ändert die folgende 1> Class.LocalScript1> das Benutzer-


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

Das Icon verbergen

Du kannst das Benutzer-Maus-Icon ausblenden, indem du das UserInputService.MouseIconEnabled auf false Class.LocalScript LocalScript umstellen. Zum Beispiel schaltet der folgende Code das Maus-Icon von der Sichtbarkeit zu der Unsichtbarkeit um und zurück jede zwei Sekunden:


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

Das Icon sperren

Du kannst die Position des Maus-Symbols mit UserInputService.MouseBehavior mit einem Wert von Enum.MouseBehavior oder LockCurrentPosition freischalten, dann wieder mit einem Wert von 1> Enum.MouseBehavior|Default1> freischalten.

Wenn das Maus-Icon eines Benutzers in einer Position gesperrt ist, UserInputService.InputChanged , wird immer noch ausgeführt, wenn der Benutzer die Maus bewegt, wobei die Entfernung, in der die Maus bewegt wurde, angezeigt wird. Zum Beispiel wird der folgende Code-Beispiel das Maus-Icon des Benutzers nach einer Sekunde sperren, dann Studio druckt die Maus-Delta, wenn der Benutzer seine Maus bewegt:


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-Standard-Bindungen

Roblox bietet Standard-Tastenbelegungen für alle Erlebnisse. Dies sind die häufigsten Eingaben für Bewegung, Kamerasteuerung und grundlegende Umgebungskommunikation. Wenn Sie die reservierten Bindungen auslassen, können Sie ContextActionService verwenden, um kreuzplattformübergreifende Bindungen zu erstellen, die mehrere Bindungen zu einer einzigen Aktion priorisieren, wie in Kontextabhängige Eingaben

Enum.CoreGuiType Funktionen, wie der Rucksack oder Chat , haben eine Liste von zusätzlichen Standard-Eingaben. Sie können nicht reservierte Eingänge wie 0> Esc0> (Roblox-Menü) oder Enum.CoreGuiType3> (Entwickler-Konsole) überschreiben.

Diese Bindungen sind Roblox-Standard, aber Sie können sie mit benutzerdefinierten Skripten überschreiben. Die meisten Roblox-Benutzer sind mit diesen Steuerungvertraut, so sollten Sie sie nur in bestimmten Fällen überschreiben.

EingängeAktion
WNach vorne
SZurück bewegen
ANach links verschieben
DRechts bewegen
LeertasteSpringen
Kamera links oder rechts drehen
Rechte Maustaste Wenn gedrückt wird, verschiebt das Ziehen der Maus die Kameraansicht
Maus-Scroll-Rad IOZoomen Sie die Kamera ein oder aus
Shift-TasteSchalte die Mouselock-Einstellung um, wenn EnableMouseLockOption aktiviert ist