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

Unity 2D中如何让TMP输入框按回车后持续接收输入?

解决Unity TMP输入框回车提交后持续保持选中的问题

核心思路

在输入框完成文本提交逻辑后,强制重新激活输入框并锁定焦点,避免用户需要手动点击才能继续输入。

具体实现方法

方法一:通过代码监听提交事件并重置焦点

创建脚本挂载到你的TMP InputField对象上,监听提交事件并在处理完成后重新激活输入框:

using UnityEngine;
using TMPro;
using UnityEngine.EventSystems;

public class PersistentInputField : MonoBehaviour
{
    private TMP_InputField _inputField;

    void Start()
    {
        _inputField = GetComponent<TMP_InputField>();
        // 绑定提交事件
        _inputField.onSubmit.AddListener(HandleInputSubmit);
        // 初始激活输入框
        _inputField.ActivateInputField();
    }

    void HandleInputSubmit(string submittedText)
    {
        // 替换为你的实际提交逻辑,比如解析控制台命令、输出日志等
        Debug.Log("用户输入: " + submittedText);

        // 清空输入框(根据需求选择是否保留)
        _inputField.text = string.Empty;

        // 强制设置事件系统选中当前输入框
        EventSystem.current.SetSelectedGameObject(_inputField.gameObject);
        // 激活输入框并将光标移至末尾
        _inputField.ActivateInputField();
        _inputField.MoveTextEnd(false);
    }
}

方法二:调整输入框UI设置辅助优化

  • 打开TMP InputField的Inspector面板,找到Navigation选项,将所有方向(Up/Down/Left/Right)的选择目标设置为输入框自身,避免焦点被其他UI元素抢走。
  • 确保Read Only选项未勾选,Activate On Select选项处于勾选状态。
  • 检查是否有其他脚本在执行过程中调用了DeactivateInputField()或修改了事件系统的选中对象,这类逻辑会导致输入框失去焦点。

注意事项

  • 如果提交逻辑包含异步操作(比如加载资源、网络请求),需要在异步操作完成后再执行重新激活输入框的代码,否则可能出现时序问题导致焦点无法重置。
  • 测试时确保场景中只有一个EventSystem对象,多个EventSystem可能导致焦点管理混乱。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 14:15:52