当前位置: 首页 > news >正文

UGUI交互组件Slider

一.Slider对象的结构

对象介绍
Slider附加Slider组件
Background背景
Fill Area填充范围
Fill填充对象
Handle Slider Area滑块移动范围
Handle滑块

二.Slider组件属性

属性说明
Fill Rect关联填充对象
Handle Rect关联滑块对象
Direction设置方向
Min Value最大取值
Max Value最小取值
Whole Numbers是否取整
Value当前取值

三.事件监听

3.1 可视化监听

3.2 代码监听

public class CSlider : MonoBehaviour
{private Slider _slider;void Start(){_slider = GameObject.Find("Slider").GetComponent<Slider>();_slider.onValueChanged.AddListener(delegate (float value){sliderOnValueChanged(value);});}public void sliderOnValueChanged(float value){Debug.Log("value: "+ value);}
}

四.填充内容占满背景

首先,我们进一步的了解默认的Slider对象,先将滑块隐藏,在最小值和最大值之间拖动Value

可以看到Value最小时,填充图片没有消失,Value最大时,填充范围没有覆盖背景图。

以下设置可以解决这个问题:

4.1.把Fill放到Slider下,Fill Area删了

4.2 将Fill的宽高设置为和父对象一致

4.3 把Fill的Image组件的ImageType属性设置为Filled,把Fill Method设置为Horizontal

将Background和Fill的图片设置后,改变Value的值,可以看到Value最小时,填充消失,Value最大时,覆盖背景

五.Slider的应用

总体来说Slider很常用,游戏中血条,进度条,设置百分比数值等地方都有应用。可按是否有交互进行分类,无交互的统称为进度条(包括血条,经验条等,肯定没有滑块);有交互的称为滑动条(可能有滑块)

5.1 进度条

某游戏的进度条UI

通过代码设置进度条UI的简单举例

public class CSlider : MonoBehaviour
{private Slider _slider;private TMP_Text _text1;private float time = 0;void Start(){_text1 = GameObject.Find("Slider1/Text1").GetComponent<TMP_Text>();_slider = GameObject.Find("Slider1").GetComponent<Slider>();_slider.minValue = 0;_slider.maxValue = 100;_slider.wholeNumbers = true;setSliderValue(20);}void Update(){time += Time.deltaTime;if(3 < time){setSliderValue(50);}Debug.Log(time);}public void setSliderValue(float value){_slider.value = value;_text1.SetText(value + "/" +  _slider.maxValue);}
}

运行效果

5.2 滑动条

某游戏滑动条UI

代码示例

public class CSlider : MonoBehaviour
{private Slider _slider;private TMP_Text _text1;private float time = 0;void Start(){_text1 = GameObject.Find("Slider1/Text1").GetComponent<TMP_Text>();_slider = GameObject.Find("Slider1").GetComponent<Slider>();_slider.minValue = 0;_slider.maxValue = 100;_slider.wholeNumbers = true;_slider.onValueChanged.AddListener(delegate (float value){Debug.Log(value);_text1.SetText(value + "/" +  _slider.maxValue);});setSliderValue(20);}public void setSliderValue(float value){_slider.value = value;_text1.SetText(value + "/" +  _slider.maxValue);}
}

运行效果

http://www.lryc.cn/news/193868.html

相关文章:

  • JAVA经典百题之按位或运算符 `|的使用
  • C多线程编程- 近似求解π
  • YOLOV7量化第二步: 模型标定
  • 前端-uniapp-开发指南
  • Java集合类ArrayList的应用-杨辉三角的前n行
  • C语言-函数
  • 蓝桥杯 枚举算法 (c++)
  • Wordpress自定义小工具logo调用设置(可视化)
  • 面试常考数据结构:红黑树、B树、B+树各自适用的场景
  • Paddle GPU版本需要安装CUDA、CUDNN
  • MYSQL length函数
  • uniapp 在android手机上运行tab栏页面跳转问题
  • css3 hover效果
  • C语言char与short取反以及符号判断问题
  • Gpt-4多模态功能强势上线,景联文科技多模态数据采集标注服务等您来体验!
  • 【idea】 java: 找不到符号
  • Flink测试利器之DataGen初探 | 京东云技术团队
  • linux更换常用软件的默认缓存路径(.conda, .huggingface等)
  • Kafka消费者使用案例
  • SpringMVC全注解开发
  • 解决 android Cannot access ‘<init>‘: it is private in
  • 不容易解的题10.15
  • Megatron-LM GPT 源码分析(二) Sequence Parallel分析
  • DNA序列(DNA Consensus String, ACM/ICPC Seoul 2006, UVa1368) rust解法
  • 如何使用Jmeter进行http接口测试?
  • bash一行输入,多行回显demo脚本
  • IDEA spring-boot项目启动,无法加载或找到启动类问题解决
  • 【LeetCode刷题(数据结构与算法)】:完全二叉树的节点个数
  • 【代码随想录】算法训练营 第一天 第一章 数组 Part 1
  • 286_C++_定时器的其中一个操作,定时重载接口—startTimer循环执行回调(未完全)