Unity按钮视觉上跳过选中Selected状态
Unity按钮视觉上跳过选中Selected状态
问题描述
Unity为Button提供了五种状态,并可以让我们在Inspector中设置五种状态的表现形式
- Normal:普通状态
- Highlighted:高亮状态,即鼠标悬停在按钮之上但没有其他操作
- Pressed:按钮被按下时的状态
- Selected:按钮被按下后选中的状态
- Disabled:禁用状态
按钮在Selected状态中时,即使鼠标重新进入按钮,也不会切换到Highlighted状态,要通过点击按扭外的区域才可以退出Selected状态。有时我们在按下按钮后不希望其显示Selected状态的表现形式而是希望其正常Highlighted
解决方法
按钮状态的切换交由Selectable.cs这个脚本完成。按钮类在实现时继承了Selectable类
1 | public class Button : Selectable, IPointerClickHandler, ISubmitHandler |
而Selectable类又提供了DoStateTransition接口函数供我们改变状态,同时其实现IPointerEnterHandler等接口,我们可以重写OnPointerEnter等相关函数来实现跳过Selected状态。
- 点击按钮后,如果鼠标仍然在按钮内,转换到Highlighted状态
- 鼠标离开按钮时,转换到Normal状态
- 鼠标进入按钮时,转换到Highlighted状态
创建NonSelectedButton类,继承Button,实现上述功能
1 | using System.Collections; |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 星辰微光的博客!





