WebGLにてイントロループを使用せず、同等の動作を実現する方法

94 views
Skip to first unread message

原田拓(DAT)

unread,
Aug 8, 2024, 10:41:28 PM8/8/24
to 宴ユーザーグループ
お世話になっております。

掲題の件ですが、設定シートリファレンスのSoundのところに有るように、Unity5.5.0ではイントロループがWebGLにて正常動作しないとのことで、Unity6でも試したところ、IntroTimeを無視して全体ループしておりました。

そのため、BGMをイントロ部とループ部とでOGGファイルを分けて用意しましたが、どのような手法を採ればイントロループと同等の動作を実現することが出来るか模索しております。
SendMessage等でUnity側で再生を賄うか等々、何かヒントがございましたらご教示頂けないでしょうか。

現在の開発環境は
Unity 6000.0.10f1
Utage 4.1.0
となっております。

マッドネスラボ

unread,
Aug 9, 2024, 1:02:15 AM8/9/24
to 宴ユーザーグループ
違う手段をとったとしても、同じ原因で動かない可能性が高いので難しいと思います。

宴のイントロループは、
「二つのAudioSourceを用意して、今の AudioSource  が鳴り終わる時間に合わせて、次のAudioSourceの再生開始点の指定を IntroTime の時間にして鳴らす」という仕組みです。
鳴り終わる時間に合わせてというのを、AudioSourceコンポーネントのPlayScheduledというメソッドで
再生開始点を指定というのを、AudioSourceコンポーネントのtimeプロパティで行っています。

どちらも、UnityのドキュメントではWebGLで使用可能となっているAPIですが、
PlayScheduledは、Unityのユーザーフォーラムでも動かないという報告があるようです。

原因としては、ブラウザによっては音をロード後に即座に再生するというのが許されていない場合があるので、
そのせいか、PlayScheduled(音を指定した時間後に予約して鳴らす)が正常に動作しないことがあるようです。
Unityのドキュメントにもある、自動再生ポリシーの部分が問題のようですので、設定次第でなんとかなるのかもしれません。
>このポリシーを有効または無効にする方法の詳細については、Google Chrome のドキュメント(Chrome の自動再生ポリシー) を参照してください。

一応保険として、PlayScheduledが効かなくても、鳴り終わっていたらIntroTimeから鳴らすという処理はしてるはずなのですが、
 >IntroTimeを無視して全体ループ
となるということは、再生開始点の指定も機能してないようで、AudioSourceコンポーネントのtimeが動作していないのかもしれません。
これはUnity6の不具合かもしれず、今後修正されるかもしれません。

>イントロ部とループ部とでOGGファイルを分けて用意しましたが、どのような手法を採ればイントロループと同等の動作を実現することが出来るか模索しております。
Unityでイントロループを行う場合、二つのオーディオファイルを使うという手法もありますが
知る限りは、イントロ終了後にシームレスに音をつなげるにはPlayScheduledを使うしかないです。
ですが、これがWebGLで正常に動作しないのであれば、結局同じ原因で動かなくなると思います。

PlayScheduledを使わずにやるのであれば、プログラム等で「イントロ音の再生終了を監視し、終了を検知したらループ部分の音を再生する」という手段を取るしかないと思いますが、
この場合1フレームごとに監視することになるので、1フレームは一般的には30~60分の1秒という間隔になるため、イントロとループの間で一瞬音が途切れることになります。

それでも良いのであれば、
「SoundManager以下のAudioSourceコンポーネントを監視し、指定の名前のAudioClipが再生され始めたら再生終了を監視しはじめ、再生が終了したらループ部分のオーディオをBGMとして再生する」
「ループ部分のAudioClipは宴のファイルロードを使わずに、この制御コンポーネントにインスペクター上であらかじめ設定しておく」
というコンポーネントを作成すれば、良いとは思うのですが
timeが正常に動作してないのであれば、再生終了の判別が難しくなると思います。(SoundStopなどのコマンドによって再生終了されたのか、イントロ部分が最後まで再生しきったかの判別も難しくなってしまうためです)



2024年8月9日金曜日 11:41:28 UTC+9 phr...@gmail.com:
Reply all
Reply to author
Forward
0 new messages