Unity_圆环滑动条(圆形、弧形滑动条)

GitHub项目链接点这里(求一个star⭐)

Unity_圆环滑动条(圆形、弧形滑动条)

效果

基础效果
角度(弧度)限制
滑块手柄指向圆心
滑块手柄指向路径

功能介绍

如上图所示,主要功能包括:

FillOrigin:和 UGUI 的 Image (Filled类型)的一样,设置圆环起始方位。包含上下左右四个方位

Clockwise:和 UGUI 的 Image (Filled类型)的一样,使用顺时针或逆时针

WholeNumbers:和 UGUI 的 Slider 一样,是否使用整数值的 Value

MinValue、MaxValue、Value:和 UGUI 的 Slider 一样,其中 Value 可在非运行模式下直接拖动查看效果

MaxAngle:最大角度。可设置圆环最大角度 0° ~ 360° ,可通过此功能实现任意角度的弧形滑动条

Radius:设置圆环的半径,调整滑块手柄的位置,此参数需要用户根据实际效果自行调整,可在非运行模式下直接修改查看效果

TowardCenter:设置滑动手柄是否朝向中心,可以设置角度偏移实现朝向圆环的效果

UnityEvent:事件接口包含 OnValueChanged<float>OnBeginDraggedOnDraggingOnEndDragged,可在 Inspector 面板或使用 AddListener() 绑定回调函数

代码介绍

实现思路:在鼠标点击后拖动时,根据鼠标在圆环Image.rectTransform上的位置 => 求出角度(相对于X轴右侧 180°表示)=> 相对于起始点的角度(360° 表示)=> 圆环Image.fillAmount和滑块手柄rect.localPosition。
其中主要代码为:

	//根据鼠标在圆环Image.rectTransform上的位置
	Vector2 localPoint;
	if (RectTransformUtility.ScreenPointToLocalPointInRectangle(_fillImage.rectTransform, eventData.position, eventData.pressEventCamera, out localPoint))
    {
        // 求出角度(相对于X轴右侧 180°表示)=> 相对于起始点的角度(360° 表示)=> 圆环Image.fillAmount和滑动rect.localPosition。
    }

本项目代码参考了UGUI源码(GitHub链接)的编码风格(主要参考了Slider.cs、SliderEditor.cs)

例如:部分函数名:

	UpdateCachedReferences(); 
	UpdateVisual();

属性赋值时的判断:

 	private static bool SetStruct<T>(ref T setValue, T value) where T : struct
    {
        if (EqualityComparer<T>.Default.Equals(setValue, value)) return false;
        setValue = value;
        return true;
    }

    private static bool SetClass<T>(ref T setValue, T value) where T : class
    {
        if (setValue == null && value == null || setValue != null && setValue.Equals(value)) return false;
        setValue = value;
        return true;
    }

使用示例

最上面有GitHub地址

  • 10
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
Unity圆形滑动是一种用户界面的控件,它可以以圆的形式展示并允许用户通过拖动滑块来选择一个值。它通常被用在需要用户进行选项选择或数值调整的场景中。 Unity圆形滑动的基本原理是将一个圆形滑动控件与数值范围关联起来。用户可以通过点击并拖动滑块来选择一个特定的数值,滑块的位置与数值的关联通常以圆心为起点从0到360度的方式来表示。当用户拖动滑块时,可以通过监测滑块的角度或者位置的改变来获取用户的选值,并根据选值进行相应的操作。 实现Unity圆形滑动主要可以通过以下步骤: 1.创建一个圆形的背景作为滑动的底部,可以使用UnityUI系统或者自定义绘制技术来实现。 2.在底部圆形背景上创建一个滑块,滑块的形状可以是一个小圆点或者其他你想要的形状。 3.实现用户拖动滑块的交互,可以通过监测鼠标或手指的位置变化来判断滑块的移动,并根据滑块的位置计算数值的选择。 4.根据滑块的位置或角度计算数值,可以通过线性映射或者其他的数值转换方法来将滑块的位置映射为一个数值范围内的数值。 5.根据滑块的数值进行相应的操作,例如更新游戏的属性、调整音量或其他与数值相关的操作。 总而言之,Unity圆形滑动是一种实现用户交互和数值选择的控件,通过拖动滑块来选择数值,并根据数值进行相应的操作。可以根据需求进行自定义设计和实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值