SpriteKit シーンがロードされたときにバックグラウンドでオーディオ ファイルを再生するという単純なタスクに苦労していました。
「Test Song.wav」という名前のオーディオ ファイルをプロジェクトにコピーしました。「Build Phases」>「Copy Bundle Resources」の下を見ると、アセットにも見つかりました (これは、この投稿で確認するように提案されたものでした)。
私のコードは問題なくコンパイルされ、リング/サイレント スイッチは正しくリングに切り替えられましたが、シーンがロードされたときにオーディオが再生されませんでした。
私は使用しています
- Xcode バージョン 8.0 ベータ版
- iOS 10 Beta 1 を実行している iPhone 6S Plus
これが私の壊れたコードです:
import AVFoundation
class GameScene: SKScene {
override func didMove(to view: SKView) {
if let path = Bundle.main().pathForResource("Test Song", ofType: "wav") {
let filePath = NSURL(fileURLWithPath:path)
let songPlayer = try! AVAudioPlayer.init(contentsOf: filePath as URL)
songPlayer.numberOfLoops = 0
songPlayer.prepareToPlay()
songPlayer.play()
}
}
}
注: Swift 3.0 では、AVAudioPlayer の init() メソッドが NSError パラメータを受け入れなくなったため、このコードはコンパイルされません。
var error:NSError?
audioPlayer = AVAudioPlayer(contentsOfURL: alertSound, error: &error)