我有两个声音文件:
我想播放Sound A一次,然后一旦声音A完成,立即播放声音B并继续循环声音B,直到我告诉它停止。这应该是在RPG中循环城镇音乐。
我已经尝试使用SoundEffect在代码中执行此操作,但是在声音A的结尾和声音B的开头之间存在微小而明显的差距。即使我将监视代码视为更新中的Sound A的SoundEffectInstance.State ()函数,当声音A完成时,我无法启动Sound B 完全,因此它是无缝的。
我更喜欢使用SoundEffect,因为我可以加载WMA文件而不是在XACT中使用WAV。
答案 0 :(得分:2)
不幸的是,SoundEffect API的简单性是通过降低灵活性来实现的。这种类型的音频编程是XACT擅长的...如果你需要复杂的构图,那么你可能想要调查移动到XACT。
答案 1 :(得分:2)
可能是第二种选择。我想你听到的差距可能是因为第二个声音需要加载到内存中,或者初始化,或者流打开(不确定内部实现)。但如果是这种情况,我想知道你是否可以这样做:
我的假设是,由于声音效果B已经初始化,它可能会更快启动,从而减少感知差距。如果你有机会尝试这个,并且是否有效,我很乐意听到: - )