主题
InputObject
概览
| 字段 | 值 |
|---|---|
| Kind | Data · 数据 Data |
| Realm | common |
InputObject 是输入事件与查询接口传出的输入数据,包含 KeyCode、UserInputType、UserInputState、Position、Delta 和 Processed 等 Meta 公开属性,可在事件回调中判断按键、输入类型及处理状态。
适用场景
常用于在输入事件回调中实现按键触发的界面开关或交互响应,例如监听 UserInputService.InputBegan,在回调参数中取得 InputObject,判断其 KeyCode 是否为 Enums.KeyCode.F1,从而切换某个面板的显隐。
使用要点
InputObject 不能由脚本构造,只能作为 UserInputService 输入事件(如 InputBegan、InputChanged、InputEnded)的回调参数获得。典型写法是先通过 game:GetService("UserInputService") 取到服务,再连接事件并在回调内读取 input.KeyCode、input.UserInputType、input.UserInputState 判断输入内容与阶段。需要位置信息时可读取 input.Position 与 input.Delta,处理冲突时可借助 input.Processed 确认该输入是否已被处理。
注意事项
InputObject 不可由脚本手动构造,应从输入事件的回调参数中获取。事件处理完毕后不应长期持有引用;Processed 表示该输入是否已被引擎或 UI 层处理,Meta 未声明它是 Lua 只读属性。
代码示例
在输入事件中读取 InputObject
lua
-- @runtime client
local userInputService = game:GetService("UserInputService")
userInputService.InputBegan:Once(function(inputObject, gameProcessedEvent)
if gameProcessedEvent then
return
end
if inputObject.UserInputType == Enums.UserInputType.Keyboard and inputObject.KeyCode == Enums.KeyCode.F1 then
print("按下 F1")
end
end)属性 (6)
| Name | 类型 | 默认值 | 说明 |
|---|---|---|---|
KeyCode | KeyCode | - | 输入对象所涉及的键盘按键代码,类型为 KeyCode 枚举,用于标识本次输入对应的按键。 |
UserInputType | UserInputType | - | 输入对象的来源类型,类型为 UserInputType 枚举,用于标识本次输入由何种设备或输入方式产生。 |
UserInputState | UserInputState | - | 输入对象所处的用户输入状态,类型为 UserInputState 枚举,用于区分输入的开始、变化、结束等阶段。 |
Position | Vector3 | - | InputObject 的 Position 属性,类型为 Vector3,用于表示该输入事件发生时的输入位置。该属性值由产生此 InputObject 的输入事件提供,可从回调参数上直接读取。 |
Delta | Vector3 | - | InputObject 的 Delta 属性,类型为 Vector3,用于表示本次输入所携带的输入变化量。该属性值随产生该 InputObject 的输入事件一并提供,可直接从回调参数上读取。 |
Processed | Bool | - | 标记该输入对象是否已被处理,类型为布尔值。 |
