根据滑块的值更改 UI 中的图像
Posted
技术标签:
【中文标题】根据滑块的值更改 UI 中的图像【英文标题】:Change image in UI depending on the value of the slider 【发布时间】:2021-06-15 21:52:35 【问题描述】:当滑块的值改变时,我试图在 UI 中改变图像,现在当我移动滑块时什么都没有发生,这是我的代码:
public class ImagesSlider : MonoBehaviour
// Start is called before the first frame update
public Sprite sprite1;
public Sprite sprite2;
public Sprite sprite3;
public Sprite sprite4;
public Sprite sprite5;
public Sprite sprite6;
public Sprite sprite7;
public Sprite sprite8;
public Sprite sprite9;
public Sprite sprite10;
public Sprite sprite11;
public Slider imageslider;
void Start()
gameObject.GetComponent<Image>();
void Update()
ChangeImage();
// Update is called once per frame
void ChangeImage()
if (imageslider.value == 1.0f)
gameObject.GetComponent<Image>().sprite = sprite1;
if (imageslider.value == 2.0f)
gameObject.GetComponent<Image>().sprite = sprite2;
非常感谢您的帮助
【问题讨论】:
【参考方案1】:如果您的滑块的最大值为 1,您必须检查 0-1 之间的值,因为它是浮动的,您需要大于或小于您的条件。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class MySlider : MonoBehaviour
// Start is called before the first frame update
public Sprite sprite1;
public Sprite sprite2;
public Sprite sprite3;
public Sprite sprite4;
public Sprite sprite5;
public Sprite sprite6;
public Sprite sprite7;
public Sprite sprite8;
public Sprite sprite9;
public Sprite sprite10;
public Sprite sprite11;
public Slider imageslider;
public Image img;
void Start()
img = gameObject.GetComponent<Image>();
void Update()
ChangeImage();
// Update is called once per frame
void ChangeImage()
if (imageslider.value <= .1f)
img.sprite = sprite1;
if (imageslider.value <= .2f && imageslider.value >= .1f)
img.sprite = sprite2;
【讨论】:
我将滑块更改为 11,因为有 11 个图像,我希望顶部每个值都有一个图像,当您上下移动时,它会更改图像 那么您必须将滑块的Slider.maxValue
更改为11,并将Slider.wholeNumbers
启用为true。
请注意,即使 Slider.wholeNumbers
设置为 true,它仍然是 float
,因此您应该使用 if(Mathf.Approximately(imageslider.value, 1f)) ...
我已经将该滑块更改为 11 和整数
当我尝试该代码时没有任何反应@ArtZolinaIII以上是关于根据滑块的值更改 UI 中的图像的主要内容,如果未能解决你的问题,请参考以下文章