如何在单人游戏中使用按钮更改音量?

时间:2019-11-25 10:26:33

标签: c# audio monogame

我想用设置中的按钮更改我用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!");
            }

        }

我收到错误System.ArgumentOutOfRangeException。 我不理解此异常,因为0.0f是静默的,1.0f是完整卷。而且在这段代码中,音量不能超出范围。

如何正确执行? 在这里的其他问题中,我找不到任何帮助。 请问有人可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

第二个代码段中的问题是您使用||。运算符。

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

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

VolumeLower方法适用相同的逻辑。