C# 静音按钮关闭声音但不重新打开?
我有一个函数,它可以播放这样的声音C# 静音按钮关闭声音但不重新打开?,c#,C#,我有一个函数,它可以播放这样的声音 void PlaySound() { if (!mute) { Sound stuff here } } 然后,我有一个功能,处理静音按钮被按下,这就是 public void MuteButtonPressed() { if (mute == true) { mute = false; } if (mute == false) { mute = true; } } 此脚本将在按下时关闭声音,但如果再
void PlaySound()
{
if (!mute)
{
Sound stuff here
}
}
然后,我有一个功能,处理静音按钮被按下,这就是
public void MuteButtonPressed()
{
if (mute == true) { mute = false; }
if (mute == false) { mute = true; }
}
此脚本将在按下时关闭声音,但如果再次按下,则不会重新打开。我试过用!mute而不是mute==false,这不起作用。我做错了什么?好的,我描述一下你的错误:你写了
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;
}
问题的核心是使用了两个
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语句很难阅读和调试。欢迎使用StackOverflow!“那没用”不是最好的解释。请更具体地说,显示哪些不起作用,并将实际的错误/异常添加到您的帖子中首先,您在
MuteButtonPressed()
中的if语句逻辑都是错误的,没有其他条件,您认为会发生什么?另外,您也不需要所有的代码,只需将方法主体简化为:mute=!沉默代码>。接下来,您的实际问题是什么?不是在播放声音吗?当你尝试做你的“声音素材”时,你是否调试过“<代码>静音< /代码>是否具有预期的值?阅读<代码> MuthButoNo压< /代码>的步骤/逻辑,并考虑静音是否正确时会发生什么。在返回上的code>和静音=!静音
”以避免您必须像这样添加返回:“
--或者只使用if/else
而不是if/if
,我还建议演示一些更好的格式化实践。一个if条件和两个附加语句加上花括号让我的眼睛流泪。比奇怪的if/return情况好多了。。。也更容易阅读。空白和格式是我们的朋友。