静音按钮会关闭声音,但不会重新打开吗?

时间:2018-10-31 18:08:48

标签: c#

我有一个播放声音的功能。

void PlaySound()
{
    if (!mute)
    {
        Sound stuff here
    }
}

然后我有一个功能来处理按下静音按钮的功能。

public void MuteButtonPressed()
{
    if (mute == true) { mute = false; }
    if (mute == false) { mute = true; }
}

此脚本将在按下时关闭声音,但是如果我再次按下它则不会重新打开声音。我已经尝试使用!mute而不是静音== false,但那没有用。我在做什么错了?

2 个答案:

答案 0 :(得分:1)

好的,我描述你的错误:你写了

public void MuteButtonPressed()
{
    if (mute == true) { mute = false; } // if mute == true then mute = false
    if (mute == false) { mute = true; } // the process continue so mute = true
}

为避免必须添加如下返回值:

public void MuteButtonPressed()
{
    if (mute == true) { mute = false; return;} 
    if (mute == false) { mute = true; }
}

但此解决方案更好:

public void MuteButtonPressed()
{
    mute = !mute;
} 

答案 1 :(得分:1)

问题的核心是您使用两个if语句而不是if/else语句。

如果mute为真,请考虑一下逻辑:

public void MuteButtonPressed()
{
    if (mute == true) 
    { 
        mute = false; //mute is true so make it false
    } 
    if (mute == false) //We just set mute to false so now this triggers
    { 
        mute = true; //setting mute to true again
    } 
}

按照您的逻辑,运行此方法后实际上没有任何变化。要解决此问题,请使用if/else语句。两个if语句将依次运行,一个if/else语句将仅运行一个块:

public void MuteButtonPressed()
{        
    if (mute) //if mute is true run the if block
    { 
        mute = false; 
    } 
    else //if mute is false run the else block
    { 
        mute = true; 
    } 
}

或更简单地说:

public void MuteButtonPressed()
{
    mute = !mute; //make mute equal to the opposite of mute (i.e flip the switch)
}

我也强烈建议您阅读正确的格式。像您所做的那样内联if语句很难阅读和调试。