Skip to content

InputObject ​

概览 ​

字段值
KindData · 数据 Data
Realmcommon

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类型默认值说明
KeyCodeKeyCode-输入对象所涉及的键盘按键代码,类型为 KeyCode 枚举,用于标识本次输入对应的按键。
UserInputTypeUserInputType-输入对象的来源类型,类型为 UserInputType 枚举,用于标识本次输入由何种设备或输入方式产生。
UserInputStateUserInputState-输入对象所处的用户输入状态,类型为 UserInputState 枚举,用于区分输入的开始、变化、结束等阶段。
PositionVector3-InputObject 的 Position 属性,类型为 Vector3,用于表示该输入事件发生时的输入位置。该属性值由产生此 InputObject 的输入事件提供,可从回调参数上直接读取。
DeltaVector3-InputObject 的 Delta 属性,类型为 Vector3,用于表示本次输入所携带的输入变化量。该属性值随产生该 InputObject 的输入事件一并提供,可直接从回调参数上读取。
ProcessedBool-标记该输入对象是否已被处理,类型为布尔值。

关联类型 ​