Так, I asked this question before on the Apple Developer Forums но не получили правильный ответ, поэтому я думал, что спросить его здесь:Xcode 8 Swift 3 Pitch изменяющих звуки
Итак, я пытаюсь сделать простую игру с хитовым звуком который имеет различную высоту, когда вы что-то нажимаете. Я думал, что это будет просто, но в конечном итоге с завалил (большинство из которых я полностью скопированный с кем-то еще):
func hitSound(value: Float) {
let audioPlayerNode = AVAudioPlayerNode()
audioPlayerNode.stop()
engine.stop() // This is an AVAudioEngine defined previously
engine.reset()
engine.attach(audioPlayerNode)
let changeAudioUnitTime = AVAudioUnitTimePitch()
changeAudioUnitTime.pitch = value
engine.attach(changeAudioUnitTime)
engine.connect(audioPlayerNode, to: changeAudioUnitTime, format: nil)
engine.connect(changeAudioUnitTime, to: engine.outputNode, format: nil)
audioPlayerNode.scheduleFile(file, at: nil, completionHandler: nil) // File is an AVAudioFile defined previously
try? engine.start()
audioPlayerNode.play()
}
мой вопрос, так как этот код кажется, чтобы остановить воспроизведение любых звуков в настоящее время играется, чтобы воспроизвести новый звук, есть ли способ изменить это поведение, чтобы он не прекратил ничего играть? Я попытался удалить бит engine.stop и engine.reset, но это просто сбой приложения. Кроме того, этот код невероятно медленный, когда его часто называют. Я могу что-то сделать, чтобы ускорить его? Это обращение необходимо очень часто.
Извините, кто читает это если я похожу на хуй, который ничего не знает о коде и просто требует, чтобы другие делали что-то в этом роде, я очень к этому не знаком, и я даже не коснулся каких-либо аудиофункций, но я просто пытаюсь понять, что какие. Swift кажется довольно похожим на Lua до сих пор, и я сделал некоторые другие рабочие вещи, я просто застрял в этой аудио-проблеме. – MysteryPancake