根据滑块的值更改 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 中的图像的主要内容,如果未能解决你的问题,请参考以下文章

Jquery UI Slider在输入字段中更改时更改滑块的值

根据选项选择更改引导滑块中的值

如何使用 jQuery 中的滑块更改样式的值

在 iOS 中使用圆形滑块更改时钟的值

滑块不起作用并更新图表中的值

jQuery滑块:颜色更改菜单不会与滑块的其余部分同步