在Unity中创建可使用快捷键切换输入框的功能

旧人旧梦旧时光

用Unity的UGUI创建的InputField输入框不能使用Tab健来实现切换这是在是让我感觉不太好,所以我就在网上寻找相应的方法,看到了一片文章,地址http://blo g.csdn.net/cyh1992899/article/details/52665103于是把代码copy试了一下,发现是可以用的 原博主用的是5.4版本的,我用的是5.5版本的,应该是都行。

ok那么以下就是具体的代码了,使用方法是,新建一个InputField输入框(可以多建几个可以测试效果),把InputField的Navigation属性设置为Automatic(很重要),把以上代码挂在InputField。
按Tab键进行切换,如果是在最后一个,那么可以同时按Shift+Tab切换到第一个的位置位置。


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

public class InputNavigator : MonoBehaviour, ISelectHandler, IDeselectHandler
{
    EventSystem _system;
    private bool _isSelect = false;

    void Start()
    {
        _system = EventSystem.current;
    }

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Tab) && _isSelect)
        {

            Selectable next = null;
            if (Input.GetKey(KeyCode.LeftShift) || Input.GetKey(KeyCode.RightShift))
            {
                next = _system.currentSelectedGameObject.GetComponent<Selectable>().FindSelectableOnUp();
            }
            else
            {
                next = _system.currentSelectedGameObject.GetComponent<Selectable>().FindSelectableOnDown();
            }
            if (next != null)
            {
                InputField inputfield = next.GetComponent<InputField>();
                _system.SetSelectedGameObject(next.gameObject, new BaseEventData(_system));
            }
            else
            {
                //表示没有找到下一个控件(已经为最后一个)
                            }
        }
    }

    public void OnSelect(BaseEventData eventData)
    {
        _isSelect = true;
    }

    public void OnDeselect(BaseEventData eventData)
    {
        _isSelect = false;
    }
}

猜你喜欢

转载自blog.csdn.net/meiyoushenmedabuliao/article/details/78388266
今日推荐