Wprowadzenie myszy i klawiatury

*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.

Duża część sesji Roblox jest odtwarzana na urządzeniach z myszką i klawiaturą, więc ważne jest prawidłowe wsparcie tych wejść podczas projektowania doświadczenia dla szerokiej grupy odbiorców.Gdy jesteś komfortowy z wpisami myszy i klawiatury, uczynij swoje doświadczenie kompatybilnym na wielu platformach, ustawiając wpisy mobilne i gamepad.

Dla wygody Roblox ustawia najczęstsze wpisy myszy i klawiatury jako domyślne wiązania, które, z wyjątkiem zarezerwowanych wiązań, możesz zastąpić.

Wspólny wprowadzanie myszy

Podobnie jak wszystkie wejścia urządzeń, możesz rejestrować wpisy myszy za pomocą UserInputService.Ta usługa zapewnia skalowalny sposób na rejestrowanie zmian wejściowych i stanów wejścia urządzeń dla wielu urządzeń naraz.Roblox wspiera również detekcję starszych wejść myszy za pomocą PlayerMouse i ClickDetectors.

Ponadto możesz użyć ContextActionService do obsługi wielu działań na jednym wejściu w zależności od kontekstu, takich jak użycie narzędzia w pobliżu skały lub otwarcie drzwi wewnątrz budowanie.Zobacz Wyrazy zależne od kontekstu dla informacji o ustawianiu akcji wejściowych kontekstowych.

Następujące LocalScript, gdy umieszczone w StarterPlayerScripts, rejestruje kliknięcia myszy i drukuje pozycję myszy do okna Wyjście:

LocalScript - Wyświetlanie kliknięcia myszy i pozycji

local UserInputService = game:GetService("UserInputService")
local function onInputEnded(inputObject, processedEvent)
-- Najpierw sprawdź, czy "przetworzone wydarzenie" jest prawdą
-- Wskazuje to, że inny skrypt już przetworzył wejście, więc ten jest ignorowany
if processedEvent then return end
-- Następnie sprawdź, czy wejście było wydarzeniem myszy
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)

Wspólny wpis klawiatury

Aby uzyskać dostęp do wydarzeń klawiatury, użyj wydarzenia UserInputService.InputEnded, aby śledzić, kiedy kończy się każdy naciśnięcie klawisza lub inne wejście.Podobnie do wydarzeń myśli, to wydarzenie działa tylko w ramach LocalScript.

Następujące LocalScript, gdy umieszczone w StarterPlayerScripts, drukuje Enum.KeyCode naciśnięte klawisza do okna Wyjście:


local UserInputService = game:GetService("UserInputService")
local function onInputEnded(inputObject, processedEvent)
-- Najpierw sprawdź, czy "przetworzone wydarzenie" jest prawdą
-- Wskazuje to, że inne skrypt już przetworzyło wejście, więc ten jest ignorowany.
if processedEvent then return end
-- Następnie sprawdź, czy wejście było wydarzeniem klawiatury
if inputObject.UserInputType == Enum.UserInputType.Keyboard then
print("A key was released: " .. inputObject.KeyCode.Name)
end
end
UserInputService.InputEnded:Connect(onInputEnded)

Wejście UI

Wejście myszy i klawiatury automatycznie współpracuje z interaktywnymi elementami interfejsu użytkownika, takimi jak TextButtons i ImageButtons, a także TextBoxes, które rejestrują wpisywanie tekstu jak pole w formularzu.

Aby uzyskać więcej informacji na temat tworzenia przycisków i obiektów wpisu tekstu, zobacz Przyciski i Wpisanie tekstu.

Tryby ruchu postaci

Możesz ustawić schematy kontroli ruchu myszy i klawiatury dla doświadczeń Roblox, zmieniając wartości StarterPlayer.DevComputerMovementMode na jedną z obserwuje:

OpcjaOpis
Wybór użytkownika Umożliwia użytkownikom wybór pożądanego schematu sterowania z menu doświadczenia. Ta opcja jest włączona domyślnie.
KlawiaturaMysz Użytkownicy mogą nacisnąć WASD aby się poruszyć i Space aby skok.To jest domyślne ustawienie dla użytkowników klawiatury i myszy dla ustawienia Wybór użytkownika .
Kliknij, aby się poruszyć Użytkownicy mogą poruszać się po doświadczeniu tylko poprzez prawskie kliknięcie lokalizacji docelowej.
Skryptowalny Wyłącza wszystkie domyślne kontrolki i pozwala ci wiązać własne kontrolki.

Ikony myszy

Możesz dostosować wygląd i zachowanie ikony myszy użytkownika w swoim doświadczeniu, aby stworzyć spójny styl dla wszystkich elementów interfejsu użytkownika.Obejmuje to tymczasowe zmiany ikony myszy użytkownika w określonych sytuacjach, takich jak przewijanie nad przyciskiem.

Zmień ikona

Możesz zmienić ikonę myszy użytkownika w LocalScript poprzez ustawienie właściwości MouseIcon w UserInputService na niestandardowy ID zasobu Roblox.Na przykład, następujące zmiany LocalScript zmieniają domyślną ikonę myszy użytkownika na okrąg z niebieskim punktem w środku:


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

Ukryj ikona

Możesz ukryć ikonę myszy użytkownika, ustawiając na w >.Na przykład następujący kod przełącza ikonę myszy z widocznej na niewidoczną i z powrotem co dwie sekundy:


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

Zablokuj ikona

Możesz zablokować pozycję ikony ikonana ekranie za pomocą z wartością lub , a następnie odblokować ją ponownie za pomocą wartości .

Jeśli ikona myszy użytkownika jest zamknięta w pozycji, UserInputService.InputChanged nadal strzela, gdy użytkownik przesuwa mysz, przekazując odległość, którą przesunął mysz.Na przykład następujący przykład kodu blokuje ikonę myszy użytkownika po jednej sekundzie, a następnie Studio drukuje delta myszy za każdym razem, gdy użytkownik przesuwa mysz:


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)

Domyślne wiązania Roblox

Roblox zapewnia domyślne wiązania klawiszy dla wszystkich doświadczeń.Są to najczęstsze wejścia używane do ruchu, kontroli kamery i podstawowej interakcji środowiska.Wykluczając zastrzeżone wiązania, możesz użyć ContextActionService do tworzenia wiązań międzyplatformowych, które priorytetowo wiążą wiele wiązań do jednej akcji, jak opisano w kontekstowo zależnych wejściach.

Enum.CoreGuiType funkcje, takie jak plecak lub czat , mają listę dodatkowych domyślnych wejść.Nie możesz zastąpić zarezerwowanych wejść, takich jak Esc (Menu Roblox) lub F9 (Konsola programisty).

Te wiązania są domyślnymi wartościami Roblox, ale możesz je zastąpić za pomocą niestandardowych skryptów.Większość użytkowników Roblox jest zaznajomiona z tymi elementy sterujące, więc powinieneś je odwoływać tylko w konkretnych przypadkach.

WejściaAkcja
WPoruszaj się naprzód
Swstecz
APoruszaj się w lewo
DPrzesuń w prawo
SpacebarSkok
Obróć kamerę w lewo lub w prawo
Prawe przyciski myszy Gdy naciśnięty, przeciąganie myszy przesuwa widok kamery
Koło przewijania myszy IOPrzybliż lub oddal kamerę
ShiftPrzełącz blokadę myszy, jeśli EnableMouseLockOption jest włączone