Unity - A计划(一年有效期) 扫二维码继续学习 二维码时效为半小时

(61评价)
价格: 2155.00元
关于slider与toggle的联动问题
123455151发起了问答2018-04-04
5
回复
378
浏览

在进行UI设置的时候我想将音量的TOGGLE和SLIDER设置为通常游戏里的那样,拖动到左边会自动静音,到右边又会自动开启,且可以中途直接静音或恢复。自己写了一段代码,其他问题可以解决,就是在直接点击toggle静音时可以将音量值设到0,但是在恢复时无法恢复,点了toggle,value值也还是0,目测问题出在顺序上,

public void OnVolumeChanged()
    {
        float temp1 = slider.value;
        if (toggle.isOn)
        {
            slider.value = temp1;
            return;
        }

        if (toggle.isOn == false)//先操作,赋值为0
        {
            
            slider.value = 0;
            
        }
    }

略微修改后为

public void OnVolumeChanged()
    {
        
        if (toggle.isOn)
        {
            slider.value = temp1;
            return;
        }

        if (toggle.isOn == false)
        {
            float temp1 = slider.value;
            slider.value = 0;
            
        }
    }

但是在变量引用的顺序上出了问题,希望siki老师能针对这个问题指教一下,是否在不同if方法间能直接引用,或是其他方面存在的问题。

 

 

所有回复
  • siki 2018-04-04

    if (toggle.isOn)
            {

                float temp1 = slider.value;
                slider.value = temp1;
                return;
            }

            if (toggle.isOn == false)
            {

                slider.value = 0;
                
            }

    还有-5条回复,点击查看
    你还没有登录,请先登录注册
  • siki 2018-04-04

    下面可以使用上面的变量,上面不能使用下面的

    一个变量的作用域只在它所在的上下{}大括号内部

    • 123455151 2018-04-04

      好的,多谢老师的指教。这个地方的确是我把中间变量换错位置了,但是还是会出现之前的问题。
      这里我无法发图,我在正式回复里发一下。

      (0) 回复
    还有-4条回复,点击查看
    你还没有登录,请先登录注册
  • 123455151 2018-04-04

    比如我在value=0.5的时候点击toggle,静音

    这时候先运行的肯定是

     if (toggle.isOn == false)
            {

                slider.value = 0;
                
            }

    这时候value已经为0了,就算我重新点击toggle恢复声音,

    if (toggle.isOn)
            {

                float temp1 = slider.value;        //此时value=0
                slider.value = temp1;
                return;
            }

    就算有了中间变量,值还是0,还无法恢复初始的音量,所以我才想问这个中间变量到底应该放在什么位置才好。

    还有-5条回复,点击查看
    你还没有登录,请先登录注册
  • siki 2018-04-04

    你可以这样定义一个变量这个要定义成成员变量,

    public float temp1;

     

     if (toggle.isOn == false)
            {
    temp1=slider.value;
                slider.value = 0;
                

     

    然后在下面恢复

     

    if (toggle.isOn)
            {

            
                slider.value = temp1;
                return;
            }

            }

    还有-5条回复,点击查看
    你还没有登录,请先登录注册
发表回复
你还没有登录,请先 登录或 注册!