Maus- und Tastatur输入 Mouse- und Tastatur输入

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

Ein großer Prozentsatz der Roblox-Sitzungen wird auf Geräten mit Maus und Tastatur abgespielt, daher ist es wichtig, diese Eingänge beim Entwerfen einer Erfahrung für ein breites Publikum richtig zu unterstützen.Sobald du dich mit der Maus- und Tastaturoberfläche wohlfühlst, mach deine Erfahrung auf mehreren Plattformen kompatibel, indem du mobile und Gamepad Eingänge einrichtest.

Zum Komfort legt Roblox die häufigsten Maus- und Tastatur输入 als Standardbindungen fest, die du außer den reservierten Bindungen überschreiben kannst.

Generische Maus-Eingabe

Wie bei allen Geräteingängen kannst du Maus-Eingaben mit UserInputService aufzeichnen.Dieser Service bietet eine skalierbare Möglichkeit, Eingabeveränderungen und Geräte输入状态 für mehrere Geräte gleichzeitig zu erfassen.Roblox unterstützt auch die Erkennung von Legacy-Maus输入 mit PlayerMouse und ClickDetectors .

Zusätzlich können Sie ContextActionService verwenden, um mehrere Aktionen auf einer einzigen Eingabe basierend auf dem Kontext zu verwalten, z. B. die Verwendung eines Werkzeugs in der Nähe eines Steins oder die Öffnung einer Tür im Inneren eines Bauen.Siehe Kontextabhängige Eingänge für Informationen zur Festlegung von Eingangsaktionen, die dem Kontext spezifisch sind.

Die folgenden LocalScript, wenn sie in StarterPlayerScripts platziert werden, erfassen Mausklicks und drucken die Mausposition in das Ausgabe窗口 ein:

LocalScript - Ausgabe Mausklick und Position

local UserInputService = game:GetService("UserInputService")
local function onInputEnded(inputObject, processedEvent)
-- Überprüfe zuerst, ob das "verarbeiteteEreignis" wahr ist
-- Dies zeigt an, dass ein anderes Skript die Eingabe bereits verarbeitet hat, sodass dieses ignoriert wird
if processedEvent then return end
-- Überprüfe als Nächstes, dass die Eingabe ein Mausereignis 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)

Generische Tastatureingabe

Um auf Tastatkevente zuzugreifen, verwende das UserInputService.InputEnded-Ereignis, um zu verfolgen, wann immer eine Taste oder ein anderer Eingabeabbruch endet.Ähnlich wie bei Maus-Ereignissen funktioniert dieses Ereignis nur innerhalb eines LocalScript.

Die folgende LocalScript, wenn sie in StarterPlayerScripts platziert wird, druckt die Enum.KeyCode eines gedrückten Tasten auf das Ausgabe -Fenster:


local UserInputService = game:GetService("UserInputService")
local function onInputEnded(inputObject, processedEvent)
-- Überprüfe zuerst, ob das "verarbeiteteEreignis" wahr ist
-- Dies zeigt an, dass ein anderes Skript die Eingabe bereits verarbeitet hat, sodass dieses ignoriert wird.
if processedEvent then return end
-- Überprüfe als Nächstes, dass die Eingabe ein Tastenereignis war
if inputObject.UserInputType == Enum.UserInputType.Keyboard then
print("A key was released: " .. inputObject.KeyCode.Name)
end
end
UserInputService.InputEnded:Connect(onInputEnded)

UI-Eingabe

Die Maus- und Tastatureingabe funktioniert automatisch mit interaktiven UI-Elementen wie TextButtons und ImageButtons, sowie TextBoxes, die Texteingaben wie ein Feld in einer Form erfassen.

Für weitere Informationen zur Erstellung von Schaltflächen- und Text输入对象, siehe Schaltflächen und Text输入.

Zeichenbewegungsmodi

Du kannst Maus- und Tastatursteuerungsschemata für Roblox-Erlebnisse festlegen, indem du die Werte von StarterPlayer.DevComputerMovementMode auf eine der gefolgte Profileänderst:

AuswahlBeschreibung
Benutzerauswahl Ermöglicht Benutzern, ihr gewünschtes Steuerschema aus dem Erlebnismenü auszuwählen. Diese Option ist standardmäßig aktiviert.
Tastatur-Maus Benutzer können WASD drücken, um sich zu bewegen und Space zu springen.Dies ist die Standardeinstellung für Tastatur- und Mausbenutzer für die UserChoice Einstellung.
Klicken, um sich zu bewegen Benutzer können nur durch das Erlebnis navigieren, indem sie auf einen Zielstandort mit der rechten Maustaste klicken.
Skriptbar Deaktiviert alle Standardsteuerelemente und ermöglicht es Ihnen, Ihre eigenen Steuerelemente zu binden.

Maus-Ikonen

Du kannst das Aussehen und das Verhalten des Mausymbols eines Benutzers innerhalb deiner Erfahrung anpassen, um einen kohärenten Stil für alle deine UI-Elemente zu schaffen.Dazu gehört, das Mausicon des Benutzers vorübergehend in bestimmten Situationen zu ändern, wie z. B. über einem Knopf zu schweben.

Ändere das Icon

Du kannst das Maussymbol des Benutzers in einem LocalScript ändern, indem du die MouseIcon Eigenschaft in UserInputService auf eine benutzerdefinierte Roblox-Asset-ID einstellst.Zum Beispiel ändern die folgenden LocalScript -Änderungen das Standard-Maussymbol des Benutzers zu einem Kreis mit einem blauen Punkt in der Mitte:


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

Verstecke das Symbol

Du kannst das Mausicon des Benutzers ausblenden, indem du das UserInputService.MouseIconEnabled auf false in einem LocalScript festlegst.Zum Beispiel wechselt der folgende Code das Maussymbol von sichtbar zu unsichtbar und zurück alle zwei Sekunden:


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

Sperre das Symbol

Du kannst die Position des Symbolauf den Bildschirm mit mit einem Wert von oder sperren, dann wieder mit einem Wert von freischalten.

Wenn das Maussymbol eines Benutzers in einer Position gesperrt ist, UserInputService.InputChanged feuert es immer noch, wenn der Benutzer die Maus bewegt, und überträgt die Entfernung, die die Maus bewegt wurde.Zum Beispiel sperrt das folgende Codebeispiel das Maussymbol des Benutzers nach einer Sekunde und druckt dann jedes Mal, wenn der Benutzer seine Maus bewegt, den Maus delta aus:


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-Standardbindungen

Roblox bietet Standard-Tastenbelegungen für alle Erlebnisse.Dies sind die häufigsten Eingänge, die für die Bewegung, die Kamera-Steuerung und die grundlegende Umweltinteraktion verwendet werden.Wenn du die reservierten Bindungen ausließt, kannst du ContextActionService verwenden, um Cross-Plattform-Bindungen zu erstellen, die mehrere Bindungen einer einzigen Actionpriorisieren, wie in kontextabhängigen Eingaben beschrieben.

Enum.CoreGuiType Features, wie der Rucksack oder Chat , haben eine Liste zusätzlicher Standard-Eingänge.Du kannst nicht reservierte Eingänge wie Esc (Roblox-Menü) oder F9 (Entwicklerkonsole) überschreiben.

Diese Bindungen sind Standard von Roblox, aber du kannst sie mit benutzerdefinierten Skripten überschreiben.Die meisten Roblox-Benutzer sind mit diesen Steuerungvertraut, du solltest sie nur in bestimmten Fällen überschreiben.

EingängeAktion
WVorwärts bewegen
SZurückbewegen
ANach links bewegen
DNach rechts bewegen
SpacebarSpringen
Kamera nach links oder rechts drehen
Rechte Maus-Taste Wenn gedrückt wird, verschiebt das Ziehen der Maus die Kameraansicht
Mausrad scrollen IOZoomen Sie die Kamera ein oder aus
ShiftSchalte die Maussperre ein, wenn EnableMouseLockOption aktiviert ist