UGUI使用小技巧(二)Slider的使用

Slider的简单介绍:

在Unity中,经常会使用Slider来做滑动选择物品数量的功能。下图是Slider下的默认属性设置:

常用属性:

上边一系列的属性跟Button的属性是差不多的,都是一些基本设置。

Direction:是用来设置滑块滑动方向的,有四个选项,自己设置一下就知道什么意思了。

MinValue:滑块能够移动的最小值。

MaxValue:滑块能够移动的最大值。

WholeNumbers:是否为整数。

Value:当前的值,取值在MinValue到MaxValue之间,如果WholeNumbers设置为true,则Value为整数。

在Slider中,可以监听onValueChanged事件,当Slider的Value值发生改变时会触发事件。

   private Slider m_testSlider;
    private void Awake()
    {
        m_testSlider = GetComponent<Slider>();
    }
    private void Start()
    {
        m_testSlider.onValueChanged.AddListener(OnNumSilderChange);
    }
    private void OnNumSilderChange(float value)
    {
        Debug.Log(value);
    }

    如果你的需求是设置一些小数的话,使用Slider不需要做过多的设置,如果你最大值最小值有什么需求的话,找到Slider后,在初始化中修改MinValue、MaxValue的值就ok了。

    如果你的需求是设置一些整数的话,只需要将WholeNumbers设置为true。

    如果你发现在Slider区域内,不能直接点击UI改变滑块的位置,检查Interactable是否设置为true。

    如果你在代码中想改变滑块的位置,在MinValue和MaxValue的合理范围内,直接修改Slider中的Value就可以了。

小技巧一:

    当你的需求是设置整数,并且最小值与最大值是相同时,你会发现你的滑块是在你初始化的位置(假如你的Slider滑动是从左到右, 滑块现在的位置就在最左边),并且Slider的Value不能改变,而你又想将滑块放在最右边。

    我看到别人的解决方案是:

    添加判断,将这种情况特殊处理,比如将最小值设置为0,最大值设置为1,值设置为1。并且不要忘记将Interactable设置为false,否则Slider还可以滑动到0的位置。

小技巧二:

  上边说,如果你的需求是设置一些整数的话,只需要将WholeNumbers设置为true。比如绝地求生中扔子弹,这个方法挺好的; 但是有一个特殊情况,如果这个数值特别大的话,你就会遇到精度丢失问题,举个例子,假如你的最大值为99999999时,你把滑动块滑到最大值,你会发现最大值是100000000,这是因为浮点数精度问题:

单精度浮点数用来表示带有小数部分的实数,IEEE754规定,单精度浮点数用4个字节存储,包括符号位1位,阶码8位,尾数23位。其数值范围为-3.4E-38~3.4E+38,单精度浮点数最多有7位有效小数。

如果不懂浮点数的精度问题的话,自行百度。

解决方法:

  如果数值过大,或者超过了单精度的有效小数位数,不建议使用WholeNumbers,将Slider的value乘以你的最大值,设置MaxValue为1.。这样可以避免很多问题。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值