C# 在monogame中如何使用按钮更改音量?

C# 在monogame中如何使用按钮更改音量?,c#,audio,monogame,C#,Audio,Monogame,我想用“设置”中的按钮更改我的c#编写的单人游戏的音量。 我有两个按钮。一个用于低音量,一个用于高音量。 按钮后面的功能如下: public static void VolumeHigher() { if (SoundEffect.MasterVolume != 1.0f) { SoundEffect.MasterVolume += 0.1f; } } pub

我想用“设置”中的按钮更改我的c#编写的单人游戏的音量。 我有两个按钮。一个用于低音量,一个用于高音量。 按钮后面的功能如下:

public static void VolumeHigher()
        {
            if (SoundEffect.MasterVolume != 1.0f)
            {
                SoundEffect.MasterVolume += 0.1f;
            }
        }

public static void VolumeLower()
        {
            if (SoundEffect.MasterVolume != 0.0f)
            {
                SoundEffect.MasterVolume -= 0.1f;
            }
        }         
当我点击“更高”或“更低”时,会有一点变化。 当我点击高或低几次,它是越来越低。不管我点击的是高还是低。气温越来越低。 它只是稍微低一点。你可以听到,但我没有变得更安静。 此时,只有两个音量步骤。一个“正常”的和一个“稍微低一点”的

另一个实施:

public static void VolumeHigher()
        {


            if (SoundEffect.MasterVolume <= 1.0f || SoundEffect.MasterVolume >= 0.0f)
            {
                SoundEffect.MasterVolume += 0.1f;
            }
            else
            {
                Console.WriteLine("The sound is loud enough. Protect your ears!");
            }

        }

        public static void VolumeLower()
        {

            if (SoundEffect.MasterVolume > 0.0f || SoundEffect.MasterVolume <= 1.0f)
            {
                SoundEffect.MasterVolume += 0.1f;
            }
            else
            {
                Console.WriteLine("The sound is quiet. You don't hear it anymore!");
            }

        }
public static void VolumeHigher()
{
如果(SoundEffect.MasterVolume=0.0f)
{
SoundEffect.MasterVolume+=0.1f;
}
其他的
{
控制台。WriteLine(“声音足够大。保护你的耳朵!”);
}
}
公共静态void VolumeLower()
{

如果(SoundEffect.MasterVolume>0.0f | | SoundEffect.MasterVolume,则第二个代码段中的问题是| |运算符的使用

例如,在VolumeHigher方法中,您正在检查声音是否小于1.0f或声音是否大于0.0f。在您的情况下,这将始终为真,因此您将添加0.1f,从而获得ArgumentOutOfRangeException

您只需删除“| | SoundEffect.MasterVolume>=0.0f”,它就可以正常工作


同样的逻辑也适用于VolumeLower方法。

谢谢。这几乎有效,但当我在lower上单击10次以上时,我会得到ArgumentOutOfRangeException。当我单击Higher时不会发生这种情况。谢谢大家。我使用了异常捕获。它有效。在这种情况下,您不必使用捕获。请确保您的检查正确无误ct.由于您使用的是float,您无法100%确定您的值是否为0.1f的增量。因此,您应该在声音较低时使用Math.Max()来指定值。类似这样的内容。SoundEffect.MasterVolume=Math.Max(SoundEffect.MasterVolume-0.1f,0.0f)。这将确保您指定的值始终至少为0.0f。