InputField算是Unity中比较重要的交互部分,但是InputField提供的监听只有OnValueChanged和OnEndEdit两种。
OnValueChanged主要用来监听输入的字符数量变化,并返回一个当前的string
OnEndEdit会返回一个结束的事件,并返回输入完毕的string
那EndEdit可以当做离开InputField的事件的话,如何知道InputField获得了焦点呢?
在这里使用了EventTrigger脚本
在InputField组件上添加EventTrigger脚本,,点击AddNewEventType,选择Click或Select事件,区别在于,Click是监听InputField被点击的事件;而Select是监听InputField被选中的事件。
随后即可像外部绑定button组件一样绑定InputField的EventTrigger事件了。
=====2.0=====
其实后来发现可以用代码实现,这是在下写的一个UIUtility.cs脚本的一部分代码,可以实现监听离去与进入
EventTypeEnum是一个枚举,注册了多种EventType,现在要用到的只是其中的OnSelect和Deselect
public static void BindUIEvent(EventTypeEnum type, UnityEngine.Events.UnityAction<BaseEventData> uiEvent, Transform trans)
{
if (!trans.GetComponent<EventTrigger>())
{
Debug.LogWarningFormat("组件未添加EventTrigger,UIUtility已为其添加,请注意");
trans.gameObject.AddComponent<EventTrigger>();
}
UnityAction<BaseEventData> selectEvent = new UnityAction<BaseEventData>(uiEvent);
EventTrigger.Entry onSelect = new EventTrigger.Entry();
switch (type)
{
case EventTypeEnum.OnSelect:
onSelect.eventID = EventTriggerType.Select;
break;
case EventTypeEnum.Deselect:
onSelect.eventID = EventTriggerType.Deselect;
break;
}
onSelect.callback.AddListener(selectEvent);
trans.GetComponent<EventTrigger>().triggers.Add(onSelect);
}