阻止音频文件重复 XNA

Posted

技术标签:

【中文标题】阻止音频文件重复 XNA【英文标题】:Stop an audiofile from repeating XNA 【发布时间】:2013-12-13 18:21:19 【问题描述】:

我的游戏中有声音

private SoundEffect sirenSound;

我有一个模型,它使用碰撞检测来检测它何时与敌方模型发生碰撞。

if (enemySphere.Intersects(playerSphere))

    health--;
    sirenSound.Play();

这很好用,只是我遇到的问题是,当两个模型发生碰撞时,每帧都会播放歌曲的另一个副本。

我想也许这样的事情会起作用

if(sirenSound.Play() == false)
   sirenSound.Play();

但它不起作用,有人知道无需使用计时器的快速解决方法吗?

【问题讨论】:

【参考方案1】:

SoundEffect 上的 Play() 方法旨在以即发即弃的方式使用。对于您正在做的事情,您想使用SoundEffectInstance,如here 所记录的那样。

private SoundEffectInstance sfxInstance;
private SoundEffect sfx;

// ...

if (sfxInstance == null)
    sfxInstance = sfx.CreateInstance();

if (sfxInstance != SoundState.Playing)
    sfxInstance.Play();

...类似的东西。

【讨论】:

以上是关于阻止音频文件重复 XNA的主要内容,如果未能解决你的问题,请参考以下文章

使用 C#、DirectX 和 XNA 播放音频和最终用户的要求

使用 C# 增加或减少音频文件的音高

是否有可嵌入 HTML 的音频播放器阻止下载它播放的音频?

Apache 字节范围和音频文件

如何播放来自两个不同来源的音频和视频?

如何在 windows phone 7 上使用压缩音频进行 SoundEffects?