UGUI源码分析:Slider滑动条组件

系列

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主要通过PointerDownDragMove三种事件进行交互上的处理。

点击&拖拽

点击与拖拽的逻辑是相同的,通过UpdateDrag方法来计算出当前位置与整体区域的系数,通过该系数更新value值的变化。

public override void OnPointerDown(PointerEventData eventData)
{
   
   
    //若发生拖拽则不需要点击单独处理
    if (!MayDrag(eventData))
        retur
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值