使用サウンド

イベントサウンドファイル
blockPlacedTock.caf(システム音)
lineClearedTink.caf
combopaymentSuccess.caf
gameOverSIMToolkitGeneralBeep.caf
rotatekey_press_click.caf

SoundManager API

final class SoundManager {
    static let shared: SoundManager
    private var activePlayers: [AVAudioPlayer] = []  // ★強参照保持

    func play(_ event: SoundEvent)
    // - 音量0.8、UserDefaults で有効/無効
    // - 再生終了時にactivePlayersから除去
}

EXC_BAD_ACCESS 対策

連続再生時に AVAudioPlayer が解放されると EXC_BAD_ACCESS が発生する問題への対策として、 activePlayers 配列で再生中プレイヤーを強参照保持。再生終了時に配列から除去する設計。

プリロード

init で全システムサウンドを AVAudioPlayer(contentsOf:) でプリロードし、再生時は player.currentTime = 0 で即座に再生。遅延ペナルティ回避。

変更履歴

バージョン日付変更内容
1.02026-05-09初版作成