如何监听InputField的选中与离开

InputField算是Unity中比较重要的交互部分,但是InputField提供的监听只有OnValueChanged和OnEndEdit两种。

OnValueChanged主要用来监听输入的字符数量变化,并返回一个当前的string

OnEndEdit会返回一个结束的事件,并返回输入完毕的string

那EndEdit可以当做离开InputField的事件的话,如何知道InputField获得了焦点呢?

 

在这里使用了EventTrigger脚本

在InputField组件上添加EventTrigger脚本,如何监听InputField的选中与离开_第1张图片,点击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 uiEvent, Transform trans)
    {
        if (!trans.GetComponent())
        {
            Debug.LogWarningFormat("组件未添加EventTrigger,UIUtility已为其添加,请注意");
            trans.gameObject.AddComponent();
        }
        UnityAction selectEvent = new UnityAction(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().triggers.Add(onSelect);
    }

 

你可能感兴趣的:(发现并解决了的错误)