我有一个播放声音的功能。
void PlaySound()
{
if (!mute)
{
Sound stuff here
}
}
然后我有一个功能来处理按下静音按钮的功能。
public void MuteButtonPressed()
{
if (mute == true) { mute = false; }
if (mute == false) { mute = true; }
}
此脚本将在按下时关闭声音,但是如果我再次按下它则不会重新打开声音。我已经尝试使用!mute而不是静音== false,但那没有用。我在做什么错了?
答案 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语句很难阅读和调试。