所有具有Selectable功能的UI都有navigation属性,用于控制当前UI具有焦点时,用户按下 ↑↓←→
按键时,焦点从当前UI转移到别的UI上。
UI之间的焦点转换路线,可以点击UI面板上的Visualize按钮显示出来。
Navigation解析:
defaultNavigation | 返回具有合理默认值的 Navigation。 |
mode | 导航模式。 |
selectOnDown | 指定一个 Selectable UI GameObject,在按下下箭头键时突出显示。 |
selectOnLeft | 指定一个 Selectable UI GameObject,在按下左箭头键时突出显示。 |
selectOnRight | 指定一个 Selectable UI GameObject,在按下右箭头键时突出显示。 |
selectOnUp | 指定一个 Selectable UI GameObject,在按下上箭头键时突出显示。 |
navigation.mode:
None | 无键盘导航。还可以确保单击/点击操作不会获得焦点。 |
Horizontal | 水平导航。 |
Vertical | 垂直导航。 |
Automatic | 自动导航。 |
Explicit | 在此模式下,可显式指定不同箭头键将控件导航到的位置。 |
当mode设置为Explicit时,可设置selectOnDown、selectOnLeft、selectOnRight、selectOnUp对象
导航关系图
在以上可视化模式中,箭头指示如何为整个控件集合设置焦点变化。这意味着,对于每个单独的 UI 控件,如果用户在给定控件具有焦点时按下箭头键,您可以看到接下来将获得焦点的 UI 控件。因此,在上面显示的示例中,如果“Button”具有焦点并且用户按下向右箭头键,则第一个(左侧)垂直滑动条随后将获得焦点。请注意,无法使用向上或向下键将焦点从垂直滑动条上移开,因为这两个键用于控制滑动条的值。水平滑动条和左/右箭头键也是同样道理。
实例:
指定一个 Selectable UI GameObject,在按下下箭头键时突出显示。
using UnityEngine;
using System.Collections;
using UnityEngine.UI; // Required when Using UI elements.
public class HighlightOnKey : MonoBehaviour
{
public Button btnSave;
public Button btnLoad;
public void Start()
{
// 获取导航数据
Navigation navigation = btnLoad.navigation;
// 将模式切换到显式,以允许自定义分配的行为
navigation.mode = Navigation.Mode.Explicit;
// 如果按下向下箭头键,则突出显示“保存”按钮
navigation.selectOnDown = btnSave;
// 将结构数据重新分配给按钮
btnLoad.navigation = navigation;
}
}