系列
UGUI源码分析系列总览
相关前置:
UGUI EventSystem源码分析
UGUI源码分析:Selectable交互组件的基类
UML图一览
Slider
BaseClass: Selectable
Interface: IInitializePotentialDragHandler,IDragHandler,ICanvasElement
Intro: UGUI中滑动条组件
- initializePotentialDrag:提前告知可能触发拖拽的接口,这个接口只有在存在IDragHandler接口时才会触发,当点击或触碰时便触发了(会发生在BeginDrag之前)
- IDragHandler:拖拽过程事件监听
- ICanvasElement :Canvas元素(重建接口),当Canvas发生更新时重建(void Rebuild)
Slider,是UGUI中滑动条组件。通过操作滑块控制一个值在minValue ~ maxValue变化,并提供了一个事件接口onValueChanged来监听值的变化。
属性介绍
- Interactable:是否可被交互(false时无法通过EventSystem进行交互)
- Transition:状态变化过渡模式(相关详情)
- Navigation:导航(相关详情)
- Fill Rect :填充物体的RectTransform
- Handle Rect :滑块物体的RectTransform
- Direction :滑动方式(左到右、右到左、上到下、下到上)
- Min Value :最小值
- Max Value :最大值
- Whole Numbers :整数开关(只运行整数变化)
- Value :当前值
- On Value Changed :value变化的事件监听
初始化
Enable阶段:只做了初始值的Set操作,以及显示上的刷新
protected override void OnEnable()
{
base.OnEnable();
UpdateCachedReferences();
Set(m_Value, false);
//更新显示
UpdateVisuals();
}
Disable阶段:无特殊处理
交互事件
Slider主要通过PointerDown、Drag、Move三种事件进行交互上的处理。
点击&拖拽
点击与拖拽的逻辑是相同的,通过UpdateDrag方法来计算出当前位置与整体区域的系数,通过该系数更新value值的变化。
public override void OnPointerDown(PointerEventData eventData)
{
//若发生拖拽则不需要点击单独处理
if (!MayDrag(eventData))
retur