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

Unity TMP_InputField的onSubmit事件未在Inspector暴露如何解决?

解决方案

方案1:代码动态绑定原生onSubmit事件(最常用)

TMP_InputField的onSubmit本身是公开API,只是默认没有在Inspector面板序列化展示,直接通过代码绑定即可,该事件仅会在用户按下回车键提交时触发,ESC取消、失焦都不会触发,完全匹配聊天输入框的需求。
示例代码:

using UnityEngine;
using TMPro;

public class ChatInputHandler : MonoBehaviour
{
    [SerializeField] private TMP_InputField _chatInput;

    private void Start()
    {
        // 动态绑定onSubmit事件
        _chatInput.onSubmit.AddListener(OnChatSubmit);
    }

    // 提交回调,参数是输入框当前的文本
    private void OnChatSubmit(string inputText)
    {
        // 这里写发送消息的逻辑
        Debug.Log($"发送聊天消息:{inputText}");
        // 可选:提交后清空输入框、重新激活输入框方便连续发送
        _chatInput.text = string.Empty;
        _chatInput.ActivateInputField();
    }

    private void OnDestroy()
    {
        // 解除绑定避免内存泄漏
        _chatInput.onSubmit.RemoveListener(OnChatSubmit);
    }
}

把这个脚本挂在任意节点,拖拽赋值TMP_InputField引用即可生效。


方案2:扩展组件暴露onSubmit到Inspector(适合需要可视化绑定的场景)

如果需要在Inspector面板拖拽绑定回调方法,可以继承TMP_InputField自定义子类,将onSubmit事件序列化暴露:
示例代码:

using UnityEngine;
using TMPro;

[DisallowMultipleComponent]
public class TMPInputFieldWithSubmit : TMP_InputField
{
    // 把原生onSubmit事件暴露到Inspector
    [SerializeField] private SubmitEvent _onSubmitExposed = new SubmitEvent();

    protected override void Awake()
    {
        base.Awake();
        // 原生事件触发时同步调用暴露的事件
        onSubmit.AddListener(inputValue => _onSubmitExposed?.Invoke(inputValue));
    }
}

把原来场景中的TMP_InputField组件替换为这个自定义的TMPInputFieldWithSubmit,就可以在Inspector中看到On Submit Exposed的事件绑定栏,和其他事件一样正常绑定回调即可。


方案3:在onEndEdit中过滤触发场景(不推荐,仅做备选)

如果因为项目限制不能使用onSubmit,可以在onEndEdit的回调中通过wasCanceled属性和按键判断过滤无效触发:

private void OnChatEndEdit(string inputText)
{
    // 排除ESC取消的情况,且仅当按下回车键时才执行提交逻辑
    if (!_chatInput.wasCanceled && Input.GetKeyDown(KeyCode.Return))
    {
        Debug.Log($"发送聊天消息:{inputText}");
    }
}

该方案的局限性是如果是移动端虚拟键盘回车触发,部分机型可能存在按键检测不到的问题,优先选择前两个方案。


内容的提问来源于stack exchange,提问作者user8810083

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 19:57:03