我想用设置中的按钮更改我用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是完整卷。而且在这段代码中,音量不能超出范围。
如何正确执行? 在这里的其他问题中,我找不到任何帮助。 请问有人可以帮助我吗?
答案 0 :(得分:1)
第二个代码段中的问题是您使用||。运算符。
例如,在VolumeHigher方法中,您正在检查声音是否小于1.0f或声音是否大于0.0f。在您的情况下,这始终是正确的,因此您将添加0.1f并因此获得ArgumentOutOfRangeException。
您只需删除“ || SoundEffect.MasterVolume> = 0.0f”,它就可以正常工作。
VolumeLower方法适用相同的逻辑。