UI按钮的多种响应方式
1. 效果描述
假设一个UI的多个按钮需要支持三种操作方式:
- 鼠标操作
- 键盘方向键操作
- 移动端触摸操作
其中鼠标操作与键盘方向键操作时,会有一个选中的按钮变色的效果。
当使用键盘选中about按钮或者光标落在上面时,颜色变浅。
该效果实现的难点主要在鼠标与键盘两种操作方式上,移动端的触摸输入使用普通的按钮响应函数即可
2. 键盘方向键操作
在该操作模式下,会默认选中第一个Start Game按钮并使其变色,按上下键可以变更选中的按钮。
想要实现这种效果,我想到了使用双向循环链表,将三个按钮按顺序放入循环链表中,每次按下方向就到下一个节点的按钮,以此类推。
在C#中,可以使用LinkedList(双向链表)加一点小改动,就能成满足我们需求的双向循环链表,代码如下:
初始化双向循环链表:
//循环链表,里面装的是每个按钮的背景图片组件
private LinkedList<Image> startPageBtnImg;
//当前选中的链表节点
private LinkedListNode<Image> onBtnImg;
//普通按钮背景图片精灵
private Sprite btnBGSprite;
//被选中的按钮背景