ゼニガネブログ

ゲーム開発のための小ネタなど。現在はUnityメインでやってます

【Unity】AudioSourceの逆再生を行う※ただし条件付き

メニューを開くときのSEは用意したけど、閉じるときのSEを用意し忘れた!諸々の事情で新しく用意できない!みたいな時に使えるかも?(体験談)

f:id:zenigane138:20180202200138p:plain

ソースコード

実装は非常に単純で、再生するデータ配列を取得して反転して設定するだけです。

 

注意点

ただし、AudioClip.GetData()とAudioClip.SetData()から正常にデータ取得・設定出来ることが条件となります。

Unity - スクリプトリファレンス: AudioClip.GetData

Unity - スクリプトリファレンス: AudioClip.SetData


圧縮されたオーディオファイル、オーディオインポーターで Load Type が Decompress on Load に設定されているときサンプルデータを引き出すのみしかできないことに注意してください。もしこれがそうでない場合、配列はすべてのサンプル値を 0 として返すことになります。

 

他の方法

多分もっと簡単な方法があるんじゃないかなと思って調べたところ、こちらのエントリが見つかりました。

baba-s.hatenablog.com

実際にAudioSourceのPitchを-1にする方法を試したところ、私の環境では単発SEのようなループがオフになっているAudioSourceの逆再生が出来ませんでした。
おそらく再生した瞬間にAudioSourceの再生終了判定に引っかかって即終了してしまっているのだと思われます。