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

Unity InputField.onSubmit事件引入版本及2018.2.7f1替代方案咨询

InputField.onSubmit 事件的起始支持版本及Unity 2018.2.7f1替代方案

一、InputField.onSubmit 的起始支持版本

InputField.onSubmit 事件是在Unity 2018.3版本中正式引入的,你的Unity 2018.2.7f1版本确实不支持该API。

二、Unity 2018.2.7f1的替代实现方案

方案1:结合 onEndEdit 事件判断回车键

onEndEdit 在输入结束时触发(如失去焦点、按下回车),可通过判断触发原因模拟onSubmit的提交行为:

using UnityEngine;
using UnityEngine.UI;

public class InputSubmitHandler : MonoBehaviour
{
    public InputField inputField;

    void Start()
    {
        inputField.onEndEdit.AddListener(OnInputEndEdit);
    }

    void OnInputEndEdit(string inputText)
    {
        // 检测是否由回车键触发结束编辑
        if (Input.GetKeyDown(KeyCode.Return) || Input.GetKeyDown(KeyCode.KeypadEnter))
        {
            // 这里编写提交逻辑
            Debug.Log("提交内容:" + inputText);
            // 可选:移除焦点避免重复触发
            inputField.DeactivateInputField();
        }
    }
}

方案2:直接监听键盘回车键

在Update中监听回车键,同时判断输入框是否处于激活状态:

using UnityEngine;
using UnityEngine.UI;

public class InputSubmitHandler : MonoBehaviour
{
    public InputField inputField;

    void Update()
    {
        if (inputField.isFocused && (Input.GetKeyDown(KeyCode.Return) || Input.GetKeyDown(KeyCode.KeypadEnter)))
        {
            string inputContent = inputField.text;
            // 执行提交逻辑
            Debug.Log("提交内容:" + inputContent);
            inputField.DeactivateInputField();
        }
    }
}

方案3:利用EventSystem的Submit事件

通过UI事件体系的ISubmitHandler接口或EventTrigger绑定提交事件:

using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;

public class InputSubmitHandler : MonoBehaviour, ISubmitHandler
{
    public InputField inputField;

    void Start()
    {
        // 自动绑定Submit事件(也可在Inspector面板手动绑定)
        EventTrigger trigger = inputField.GetComponent<EventTrigger>() ?? inputField.gameObject.AddComponent<EventTrigger>();
        
        EventTrigger.Entry submitEntry = new EventTrigger.Entry();
        submitEntry.eventID = EventTriggerType.Submit;
        submitEntry.callback.AddListener(data => OnSubmit((BaseEventData)data));
        trigger.triggers.Add(submitEntry);
    }

    public void OnSubmit(BaseEventData eventData)
    {
        // 执行提交逻辑
        Debug.Log("提交内容:" + inputField.text);
        inputField.DeactivateInputField();
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 00:26:25