想实现一个输入界面很常用的功能,就是使用tab键切换控件,但是在unity里边操作UI实在难用,在网上找了半天,都是一些比较复杂的方法,心里觉得不应该那么难,终于找到了一种比较简单的方法,修改之后感觉用着不错,所以贴出来供大佬们享用。
1.首先申请一个数组用来盛放需要响应的组件
/// <summary>
/// 响应tab键的控件
/// </summary>
/// <typeparam name="GameObject"></typeparam>
/// <returns></returns>
[SerializeField]
private List<GameObject> resTabList = new List<GameObject> ();
2.然后写一个函数来控制控件的选中状态
private void MoveNextTabMod () {
if (Input.GetKeyDown (KeyCode.Tab)) {
var cur = EventSystem.current.currentSelectedGameObject;
if (resTabList.Contains (cur)) {
var index = resTabList.IndexOf (cur);
index += 1;
index %= resTabList.Count;
EventSystem.current.SetSelectedGameObject (resTabList[index]);
}
}
}
3.放在Update函数里边,结束
// Update is called once per frame
void Update () {
MoveNextTabMod ();
}
参考资料(这个必须写上,简单实用):https://blog.csdn.net/qq_42937284/article/details/106146595