在 SpriteKit 中(对于那些不熟悉它的人)有一种加载和卸载场景以及它们之间的过渡(视觉)的方法。
我试图在场景之间进行声音播放,当它们过渡时......这不会断断续续。
到目前为止,我尝试过的所有方法要么没有声音,要么声音断断续续,即使使用声音管理器也是如此,如下所示:
import AVFoundation
import SpriteKit
open class SoundManager {
static let soundStart = SKAction.playSoundFileNamed("ActionBeep_AP1.7", waitForCompletion: true)
static var coinSound = NSURL(fileURLWithPath:Bundle.main.path(forResource: "ActionBeep_AP1.7", ofType: "wav")!)
static var audioPlayer = AVAudioPlayer()
open static func playCoinSound(){
guard let soundToPlay = try? AVAudioPlayer(contentsOf: coinSound as URL) else {
fatalError("Failed to initialize the audio player with asset: \(coinSound)")
}
soundToPlay.prepareToPlay()
self.audioPlayer = soundToPlay
self.audioPlayer.play()
}
}
有人成功地让场景转换声音顺利运行吗?我意识到场景转换期间发生了很多事情,这可能对声音引擎没有帮助。但我认为必须有一种方法可以在场景转换期间发出清晰的声音。
是的,我尝试过 .caf、.mp3 和 .wav 文件,它们都具有不同的“压缩”和原始状态。我认为问题在于我播放声音的方式,而不是文件类型。
正如crashoverride777所说,您需要在加载声音管理器时进行更改。你可以在你的didMoveToView()
最小化加载时间的函数:
DispatchQueue.global(qos: .userInitiated).async {
// Load your sound stuff
}
现在,您可以在需要时加载声音文件,无延迟。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)