You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity新输入系统onAnyButtonPress调用报错,TEXT事件类型异常求助

问题原因
  • InputSystem.onAnyButtonPress的事件类型限制:这个回调仅设计用来处理按钮类控件的状态变更事件(StateEvent/DeltaStateEvent),比如键盘按键、鼠标按钮的按下/松开动作。但当程序触发文本输入事件(比如输入法打字、粘贴文本)时,这类事件属于TEXT类型,不符合该回调的预期参数类型,因此抛出错误。
  • 输入事件流的区分:Unity新输入系统中,按钮输入事件和文本输入事件属于不同的事件流,onAnyButtonPress并不覆盖文本输入场景,强行触发会导致类型不匹配。
可行修复方案

方案1:仅监听按钮事件,过滤非法事件类型

在回调内先判断当前事件的类型,只处理符合要求的事件:

private void Start()
{
    InputSystem.onAnyButtonPress.Call(inputControl =>
    {
        if (InputSystem.currentEventPtr.IsA<StateEvent>() || InputSystem.currentEventPtr.IsA<DeltaStateEvent>())
        {
            DoSomething();
        }
    });
}

方案2:监听所有输入事件,按需处理不同类型

如果需要同时处理按钮输入和文本输入,改用InputSystem.onEvent并针对性处理:

private void Start()
{
    InputSystem.onEvent += (eventPtr, device) =>
    {
        // 处理按钮类输入事件
        if (eventPtr.IsA<StateEvent>() || eventPtr.IsA<DeltaStateEvent>())
        {
            DoSomething();
        }
        // 处理文本输入事件
        else if (eventPtr.IsA<TextEvent>())
        {
            var textEvent = TextEvent.From(eventPtr);
            // 这里添加文本输入的处理逻辑
        }
    };
}

内容的提问来源于stack exchange,提问作者Adrien G.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 08:45:39