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
相关产品推荐
相关产品推荐

