Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 静音按钮关闭声音但不重新打开?_C# - Fatal编程技术网

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情况好多了。。。也更容易阅读。空白和格式是我们的朋友。