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

问题描述 投票:0回答:1

我想用设置中的按钮来更改我用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是完整卷。并且在此代码中,音量不能超出范围。

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

c# audio monogame
1个回答
0
投票

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.