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

How can I change sound volume with buttons in 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;
            }
        }         

当我点击更高或更低时,有一点变化。 当我点击更高或更低几次时,它越来越低。没关系,如果我点击更高或更低。它越来越低。 而且只低一点点。你可以听到它,但我并没有变得更安静。 此时只有两个音量步长。一个 "normal" 个和一个 "little bit lower" 个。

另一个实现:

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是全音量。并且在这段代码中,音量不能超出范围。

我怎样才能正确地做到这一点? 我在这里的其他问题上找不到帮助。 请问有没有人可以帮助我?

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

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

您可以简单地删除“|| SoundEffect.MasterVolume >= 0.0f”,它应该可以正常工作。

相同的逻辑适用于 VolumeLower 方法。