相同的声音重叠使它非常响亮。提示与技巧?

时间:2012-09-17 00:58:42

标签: c# audio xna

我正在制作的游戏中有多个对象,而且我遇到的主要问题是如何在不播放相同声音两次或更多时播放声音。我想知道你是否有任何关于如何使声音只播放一次的技巧/提示,无论它有多少实例制作和平衡,而不是让它播放50次大声播放。

我正在使用XNA.Framework.Audio.SoundEffectInstance播放声音。

3 个答案:

答案 0 :(得分:1)

这更像是混音问题,而不是编程问题。两次播放样本总会产生更全面的效果。

从程序角度来看,您可以确保声音永远不会同时播放两次。要完成此操作,请在每次声音即将播放时设置一个布尔值。在播放声音之前,请确保布尔值为false或取消事件。播放声音后,将布尔值设置为false。

答案 1 :(得分:1)

这是一个非常通用的答案,但也许您可以创建不同的声音类别(例如,拍摄声音,移动声音,环境声音)。

当您播放声音时,您可以播放每个班级的当前声音,同时将该班级的所有其他声音静音。

例如,对于每次枪击,情况可能是每次拍摄之间的时间短于播放声音所需的时间。对于每次新的枪声,只需将拍摄声音池中的所有其他声音静音。

为此,您可以将拍摄声音对象添加到拍摄声音阵列中,并且对于每个游戏帧,检查以确保没有新的声音。如果有新的声音,请在播放新声音之前迭代声音数组以使所有声音静音。

然后你可以制作多个声音阵列(步行/环境),这样你的拍摄声音就不会减少行走声音/环境声音。

答案 2 :(得分:1)

在实例类中,您可以创建一个布尔值的静态变量。

当一个实例发出声音时,首先要检查静态变量。如果变量为true,则不播放声音。如果是假,请播放声音。

声音播放完毕后,将静态变量设为false,以便下一个实例播放声音。

示例:

public static bool is_playing = false;