BGMのループを綺麗にやってくれるUdon https://called-d.booth.pm/items/4005001 と同じものです UdonSharp で書いてますが Udon Assembly でもパラメータの設定が正しければ問題なく動くはず ## ループのやり方 1. ループ部分だけのオーディオファイルを持っていて、イントロが必要ない場合 → この Udon は必要ありません。AudioSource の Loop にチェックを入れてください。 2. .wav ファイルを持っていて、イントロ+無限ループでいい場合 → この Udon は必要ありません。.wav ファイルにループポイントを設定してください。 https://github.com/kraiHD/UniWaveLoop を使うとUnityだけで作業できます。 3. イントロ部とループ部に分かれたオーディオファイルを持っている → この Udon の2音源版を使えます 4. 曲1個のオーディオファイルを持っていてイントロ付き、アウトロ付きでループさせたい → この Udon の1音源版を使えます ※ 現在、ファイルの末尾を loop end にするとうまく動きません ## 使用方法(2音源版) * BGMLoopManagerSeparated を付けたGameObjectを用意します * AudioSourceを3つ用意し、順に clip に イントロ部, ループ部, ループ部 として設定します * 3つの AudioSource を BGMLoopManagerSeparated の変数 Audio Source Intro, Audio Source Loop A, B に設定します (AudioSource以外を設定した `LoopBGM (Separated).prefab` を同梱しています) ## 使用方法 (1音源版) * BGMLoopManager の UdonBehaviour をAudioSouceの付いているGameObjectにアタッチしてください * Audacity などで波形を確認するなどして loop start と loop end を求めて設定してください (パラメータがほぼ空ですが一応 `LoopBGM.prefab` を同梱しています) loop end が音源の終わりに極端に近い場合は正常に動作しません タイミングが全然違う場合、サンプリングレートの問題だと思うのでログから `freq: ??? Hz` の部分を探して実行時の周波数を調べてください ### 入力 loop count: ループで戻す回数。-1 で無限 loop start: ループ開始位置(サンプル位置) loop end: ループ終了位置(サンプル位置) #### 入力(オプション) loop start in sec: ループ開始位置(秒数) loop end in sec: ループ終了位置(秒数) (秒数で指定する欄はマイナスでない数を入れると有効)
CC0