在 Roblox 的多_sessions 中,有大量的会话是通过鼠标和键盘进行的,因此在为广泛受众设计游戏时,支持这些输入是很重要的。
为了简化包含鼠标/键盘的跨平台输入,Roblox 提供了输入操作系统以定义诸如“跳跃”、“冲刺”或“射击”等操作,并设置多个硬件输入的绑定以驱动这些操作。
Roblox 还通过 UserInputService 事件如 InputBegan 和 InputEnded 以及方法如 IsKeyDown() 来支持一般的鼠标/键盘输入,用于检查特定键是否在键盘上被按下。
输入类型检测
在跨平台开发中,重要的是要确定并响应玩家使用的 PreferredInput 类型,通常是为了确保用户界面 元素如屏幕上的按钮和菜单能够优雅地工作并支持跨设备交互。
例如,PC 或笔记本电脑默认情况下假设鼠标/键盘为输入方式,但玩家可能选择连接蓝牙游戏手柄。在这种情况下,鼠标/键盘仍然是有效的输入,但你可以假设玩家希望切换到连接的游戏手柄作为主要输入类型。
有关更多信息,请参见输入类型检测。
泛用鼠标/键盘输入
超出输入操作系统,你可以使用 UserInputService 捕获鼠标和键盘输入。以下的 LocalScript,当放置在 StarterPlayerScripts 中时,将捕获键和鼠标点击的开始和结束阶段,并将结果打印到输出窗口。
local UserInputService = game:GetService("UserInputService")
local function onInputBegan(inputObject, processedEvent)
-- 如果另一个脚本已经处理了输入,则返回
if processedEvent then return end
print(inputObject.KeyCode.Name, "开始了!", inputObject.Position)
end
local function onInputEnded(inputObject, processedEvent)
-- 如果另一个脚本已经处理了输入,则返回
if processedEvent then return end
print(inputObject.KeyCode.Name, "结束了!", inputObject.Position)
end
UserInputService.InputBegan:Connect(onInputBegan)
UserInputService.InputEnded:Connect(onInputEnded)鼠标图标
你可以自定义玩家鼠标图标在游戏中的外观和行为,以在所有用户界面元素之间创建统一的风格。这包括在特定情况下临时更改玩家的鼠标图标,例如在按钮上悬停时。
你可以通过在 LocalScript 中设置 MouseIcon 属性为自定义的 Roblox 资产 ID 来更改玩家的鼠标图标。例如,以下的 LocalScript 将玩家的默认鼠标图标更改为中间有一个蓝点的圆形。
local UserInputService = game:GetService("UserInputService")
UserInputService.MouseIcon = "rbxassetid://3400146391"