【Unity3D-UGUI系列】(十)Slider 滑动条组件详解

2,670 阅读3分钟

这是我参与11月更文挑战的第10天,活动详情查看:2021最后一次更文挑战

推荐阅读

一、前言

首先,介绍一个UGUI,NGUI是UGUI的前身,Unity开发团队将NGUI的开发团队收到自己开发团队下,并且由此开发了UGUI。 UGUI系统是从Unity 4.6版本后才开始集成到Unity编辑器中。

UGUI的特点:

  • 灵活
  • 快速
  • 可视化

对于开发者来说有很多的优点,比如说:

  • 效率高
  • 实现效果好
  • 易于使用和拓展
  • 与Unity编辑器的兼容性高

二、Slider 滑动条组件介绍

Slider是一个滑动条组件,一般用来制作血条或者进度条。

Slider和Scrollbar都是滑动条组件,那么他们直接有啥区别呢:

Slider更偏向于用来改变一个数值,比如说血条、进度条,或者改变声音的大小等。

Scrollbar则是改变目标比例的组件,是一个百分比0-100%,例如改变滚动视野的显示区域。

我们创建一个Slider组件看一下它的属性:

在Unity的 Hierarchy 面板上选择“Create→UI→Slider”新建一个Slider组件: 在这里插入图片描述 Slider组件在Hierarchy视图中的层级结果如下: 在这里插入图片描述

对象介绍
SliderSlider组件
Background背景图
Fill Area填充区域
Fill填充对象
Handle Slider Area滑动条滑动区域
Handle滑动条

接下来就详细了解一下Slider 滚动条组件的属性。

三、Slider 滑动条组件属性

在这里插入图片描述 Slider滑动条组件没有Image组件,背景放到了子对象Background进行设置。

接下来看一下详细属性:

属性介绍
Fill Rect(填充矩形)滑块与最小值方向所构成的填充区域所要使用的填充矩形,如果滑动条的作用只是用于改变指定值,那么此选项建议置空,这个相比于Scrollbar所多出来的属性主要用于标识从最小值变化到当前值所经过的变化区域,如果用做进度条(显示任务进行进度)的话,这个属性是比Scrollbar多出来的一个优势。
Handle Rect(操作条矩形)当前值处于最小值与最大值之间比例的显示范围,也就是整个滑条的最大可控制范围。
Direction(方向)滑动条的方向,从左至右,从上至下还是其他的。
Min Value(最小值)滑动条的可变化最小值。
Max Value(最大值)滑动条的可变化最大值。
Whole Numbers(变化值为整型)勾选此项,拖动滑动条将按整型数(最小为1)进行改变指定值。
Value(值)当前滑动条对应的值。
On Value Changed值改变时触发消息。

四、使用Slider制作一个进度条

首先,新建Slider组件,修改背景图Background和填充块Handle: 在这里插入图片描述 然后新建一个Text组件用来显示进度。

编写代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class SliderTest : MonoBehaviour
{
    private Slider m_Slider;//Slider对象
    private Text m_Text;    //Text对象
    private float m_Value;  //控制进度

    void Start()
    {
        m_Slider = GameObject.Find("Slider").GetComponent<Slider>();
        m_Slider.value = 0;
        m_Text = GameObject.Find("Text").GetComponent<Text>();
        m_Text.text = "";
    }

    void Update()
    {
        if (m_Value < 100)
        {
            m_Value++;
            //实时更新进度百分比的文本显示 
            m_Text.text = m_Value + "%";
            m_Slider.value = m_Value / 100;
        }
        else
        {
            m_Text.text = "OK";
        }
    }
}

运行结果: 在这里插入图片描述