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

来源:互联网 发布:数据库审计价格 编辑:程序博客网 时间:2024/06/06 05:57

旧人旧梦旧时光

用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;    }}
阅读全文
0 0