Một tỷ lệ lớn các phiên Roblox được chơi trên các thiết bị có chuột và bàn phím, vì vậy rất quan trọng để hỗ trợ đúng các đầu vào này khi thiết kế một trải nghiệm cho một lượng lớn khán giả.Khi bạn cảm thấy thoải mái với các đầu vào chuột và bàn phím, hãy làm cho trải nghiệm của bạn tương thích trên nhiều nền tảng bằng cách thiết lập di động và gamepad đầu vào.
Vì tiện lợi, Roblox đặt các đầu vào chuột và bàn phím phổ biến nhất là kết nối mặc định mà, ngoại trừ các kết nối dự trữ, bạn có thể ghi đè lại.
Nhập chuột chung
Giống như tất cả các đầu vào thiết bị, bạn có thể thu thập đầu vào chuột bằng cách sử dụng UserInputService .Dịch vụ này cung cấp một cách có thể mở rộng để thu nhận các thay đổi nhập và trạng thái nhập thiết bị cho nhiều thiết bị cùng một lúc.Roblox cũng hỗ trợ phát hiện đầu vào chuột cũ với PlayerMouse và ClickDetectors .
Bên cạnh đó, bạn có thể sử dụng ContextActionService để xử lý nhiều hành động trên một đầu vào duy nhất dựa trên ngữ cảnh, chẳng hạn như sử dụng công cụ khi gần một viên đá, hoặc mở cửa khi ở bên trong tòa xây dựng.Xem Nhập phụ thuộc bối cảnh để có thông tin về cách thiết lập hành động nhập cụ thể bối cảnh.
Các thẻ sau đây LocalScript , khi được đặt vào StarterPlayerScripts , sẽ nhận được nhấp chuột và in vị trí chuột vào cửa sổ Xuất:
LocalScript - Xuất nhấp chuột và vị trí
local UserInputService = game:GetService("UserInputService")
local function onInputEnded(inputObject, processedEvent)
-- Đầu tiên kiểm tra xem "processedEvent" có đúng không
-- Điều này cho thấy một kịch bản khác đã xử lý đầu vào, vì vậy kịch bản này bị bỏ qua
if processedEvent then return end
-- Tiếp theo, kiểm tra xem nhập là một sự kiện chuột
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)
Nhập bàn phím chung
Để truy cập sự kiện bàn phím, sử dụng sự kiện UserInputService.InputEnded để theo dõi bất cứ khi nào bất kỳ phím hoặc nhập khác kết thúc.Tương tự như sự kiện chuột , sự kiện này chỉ hoạt động trong một LocalScript .
Các đoạn sau LocalScript , khi được đặt vào StarterPlayerScripts , in ra Enum.KeyCode của một phím được nhấn vào cửa sổ Output:
local UserInputService = game:GetService("UserInputService")
local function onInputEnded(inputObject, processedEvent)
-- Đầu tiên kiểm tra xem "processedEvent" có đúng không
-- Điều này cho thấy một kịch bản khác đã xử lý đầu vào, vì vậy kịch bản này bị bỏ qua.
if processedEvent then return end
-- Tiếp theo, kiểm tra xem nhập là sự kiện bàn phím
if inputObject.UserInputType == Enum.UserInputType.Keyboard then
print("A key was released: " .. inputObject.KeyCode.Name)
end
end
UserInputService.InputEnded:Connect(onInputEnded)
Nhập UI
Nhập chuột và bàn phím tự động hoạt động với các thành phần giao diện người dùng tương tác như TextButtons và ImageButtons , cũng như TextBoxes mà thu nhập nhập văn bản giống như một trường trong một biểu mẫu.
Để biết thêm thông tin về việc tạo nút và đối tượng nhập văn bản, hãy xem Nút và Nhập văn bản .
Các chế độ di chuyển nhân vật
Bạn có thể thiết lập các điều khiển di chuyển chuột và bàn phím cho các trải nghiệm Roblox bằng cách thay đổi các giá trị của StarterPlayer.DevComputerMovementMode thành một trong các điều theo dõi:
Tùy chọn | Mô tả |
---|---|
Lựa chọn của người dùng | Cho phép người dùng chọn cơ chế điều khiển mong muốn của họ từ menu trong trải nghiệm. Tùy chọn này được bật mặc định. |
Chuột máy tính | Người dùng có thể nhấn WASD để di chuyển và Space để nhảy.Đây là cài đặt mặc định cho người dùng bàn phím và chuột cho cài đặt Tùy chọn người dùng . |
Nhấp để di chuyển | Người dùng chỉ có thể di chuyển qua trải nghiệm bằng cách nhấp chuột phải vào vị trí mục tiêu. |
Có thể viết | Vô hiệu hóa tất cả các điều khiển mặc định và cho phép bạn gắn các điều khiển riêng của mình . |
Biểu tượng chuột
Bạn có thể tùy chỉnh sự xuất hiện và hành vi của biểu tượng chuột của người dùng trong trải nghiệm của bạn để tạo ra một phong cách hòa hợp cho tất cả các yếu tố UI của bạn.Điều này bao gồm thay đổi tạm thời biểu tượng chuột của người dùng trong các trường hợp cụ thể, chẳng hạn như lướt qua nút.
Thay đổi biểu tượng
Bạn có thể thay đổi biểu tượng chuột của người dùng trong một LocalScript bằng cách thiết lập thuộc tính MouseIcon trong UserInputService thành một ID tài sản Roblox tùy chỉnh.Ví dụ, các thay đổi sau LocalScript thay đổi biểu tượng chuột mặc định của người dùng thành một vòng tròn với một chấm tròn màu xanh lam ở giữa:
local UserInputService = game:GetService("UserInputService")UserInputService.MouseIcon = "rbxassetid://3400146391"
Ẩn biểu tượng
Bạn có thể ẩn biểu tượng chuột của người dùng bằng cách đặt UserInputService.MouseIconEnabled đến false trong LocalScript .Ví dụ, mã sau đây chuyển biểu tượng chuột từ hiển thị sang vô hình và quay lại mỗi hai giây:
local UserInputService = game:GetService("UserInputService")while true dotask.wait(2)UserInputService.MouseIconEnabled = falsetask.wait(2)UserInputService.MouseIconEnabled = trueend
Khóa biểu tượng
Bạn có thể khóa vị trí của biểu tượng chuột vào màn hình bằng cách sử dụng với giá trị hoặc , sau đó mở khóa lại với giá trị .
Nếu biểu tượng chuột của người dùng bị khóa ở một vị trí, UserInputService.InputChanged vẫn bắn khi người dùng di chuyển chuột, truyền qua khoảng cách chuột đã di chuyển.Ví dụ, mã mẫu sau đây khóa biểu tượng chuột của người dùng sau một giây, sau đó Studio in delta chuột mỗi khi người dùng di chuyển chuột:
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)
Bộ gắn kết mặc định của Roblox
Roblox cung cấp các kết nối phím mặc định cho tất cả các trải nghiệm.Đây là các đầu vào phổ biến nhất được sử dụng cho di chuyển, điều khiển máy ảnh và tương tác môi trường cơ bản.Bỏ ngoài các giao diện dự trữ, bạn có thể sử dụng ContextActionService để tạo các giao diện cắm chéo trên nhiều nền tảng ưu tiên nhiều giao diện cho một hành động duy nhất, như được mô tả trong nhập liệu phụ thuộc vào ngữ cảnh .
Enum.CoreGuiType các tính năng, như Ba lô hoặc Trò chuyện , có một danh sách các đầu vào mặc định bổ sung.Bạn không thể ghi đè lại các đầu vào được dự trữ như Esc (Menu Roblox) hoặc F9 (Bảng điều khiển Nhà phát triển).
Các giao diện này là mặc định của Roblox, nhưng bạn có thể thay thế chúng bằng các kịch bản tùy chỉnh.Hầu hết người dùng Roblox đều quen thuộc với các điều khiển này, vì vậy bạn chỉ nên vô hiệu hóa chúng trong các trường hợp cụ thể.
Nhập | Hành động |
---|---|
W↑ | Tiến lên phía trước |
S↓ | Quay quay lại |
A | Di chuyển sang trái |
D | Di chuyển sang phải |
Spacebar | Nhảy |
←→ | Xoay máy ảnh sang trái hoặc phải |
Nút chuột phải | Khi nhấn, kéo chuột di chuyển góc nhìn máy ảnh xung quanh |
Bánh xe cuộn chuột IO | Phóng to hoặc thu nhỏ camera |
Shift | Bật/tắt khóa chuột nếu EnableMouseLockOption được bật |