我有两个声音文件:

  • Sound A 是一个 18 秒的介绍,旨在播放一次
  • Sound B 是一个 1 分钟的循环轨道

  • 我想播放一次声音 A,然后一旦声音 A 完成,立即播放声音 B 并继续循环声音 B,直到我告诉它停止。这应该是在 RPG 中循环播放城镇音乐。

    我已经尝试在代码中仅使用 SoundEffect 执行此操作,但是在声音 A 的结尾和声音 B 的开头之间存在微小但明显的差距。即使我将监视代码放在 Update() 函数中监视声音 A 的 SoundEffectInstance.State ,当声音 A 完成时,我无法完全启动声音 B 以便它是无缝的。

    我更喜欢使用 SoundEffect,因为我可以加载 WMA 文件,而不是在 XACT 中使用 WAV。

    最佳答案

    可能的第二个选择。我想你听到的差距可能是因为第二个声音需要加载到内存中,或者初始化,或者流打开(不确定内部实现)。但如果是这种情况,我想知道你是否可以这样做:

  • 加载两个音效(a 和 b)
  • 开始播放音效 A
  • 立即开始播放音效 B
  • 一帧后暂停音效 B
  • 音效A结束后,重启音效A

  • 我的假设是,由于音效 B 已经初始化,它可能会启动得更快,从而减少感知差距。很想知道你是否有机会尝试这个,以及它是否有效:-)

    关于audio - 使用音效在 XNA 中使用介绍循环播放音乐,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2812397/

    10-12 20:11