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

我的游戏中有声音

private SoundEffect sirenSound;

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

if (enemySphere.Intersects(playerSphere))
{
    health--;
    sirenSound.Play();
}

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

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

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

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

【问题讨论】:

    标签: c# audio timer xna


    【解决方案1】:

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

    private SoundEffectInstance sfxInstance;
    private SoundEffect sfx;
    
    // ...
    
    if (sfxInstance == null)
        sfxInstance = sfx.CreateInstance();
    
    if (sfxInstance != SoundState.Playing)
        sfxInstance.Play();
    

    ...类似的东西。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-18
      • 1970-01-01
      • 2022-08-03
      • 1970-01-01
      • 1970-01-01
      • 2015-02-28
      • 1970-01-01
      相关资源
      最近更新 更多