##やりたいこと
BGMを流したまま効果音を再生する
##ソースコード
音声のファイル名:bgm.mp3と button.mp3
import UIKit
import AVFoundation
class ViewController: UIViewController {
var player0:AVAudioPlayer?
var player1:AVAudioPlayer?
override func viewDidLoad() {
super.viewDidLoad()
// 再生する音声ファイルを指定する
let url = Bundle.main.bundleURL.appendingPathComponent("bgm.mp3")
do {
try player0 = AVAudioPlayer(contentsOf: url)
} catch {
print("Error")
}
player0!.play()
//音声をループさせる
player0!.numberOfLoops = -1}
//ボタンを押したら効果音がなるように設定
@IBAction func playSound(sender: AnyObject) {
// 再生する音声ファイルを指定する
let soundURL = Bundle.main.url(forResource: "button", withExtension: "mp3")
do {
player1 = try AVAudioPlayer(contentsOf: soundURL!)
player1?.play()
} catch {
print("error...")
}
}
}
##まとめ
音を同時に再生しようとすると片方の音が止まってしまう問題に約1時間もハマってしまいました。
色々調べた結果【作るAVAudioPlayerのインスタンスの数だけ音楽再生関数を作る必要がある】とのことで上記のようなコードに至りました。
意外とシンプルだった。出来た時めっちゃ嬉しかったです。笑
初心者なので上記のコードがベストなのかはわからないのですがとりあえず動いたから良いと言うことで。笑
より良い同時再生方法があればご教授いただけると嬉しいです。