AudioSettings クラスは、サウンドシステムに関連したさまざまなグローバル情報を含んでいて、オーディオシステムをランタイムでリセットできるようにする API です。これにより、スピーカーモード、サンプルレート(プラットフォームが対応している場合)、DSP バッファーサイズ、リアル/バーチャルのボイスカウントなどの設定の変更が可能になります。
これらの多くは、Project Settings の Audio セクションでも設定できます。変更された設定はエディターに適用されると同時にゲームの初期状態も定義します。これに対し、AudioSettings API を使って行われた変更はゲームのランタイムにのみ適用され、エディター上でゲームを終了すると Project Settings で設定された状態にリセットされます。
ゲームのサウンドオプションメニューで、ユーザーがサウンド設定を変更できるようにするか、デバイスの変更 (外部のオーディオ入出力デバイスや、オーディオデバイスとしても機能する HDMI モニターの接続など) に連動して変更させることもできます。AudioConfiguration AudioSettings.GetConfiguration() / bool AudioSettings.Reset(AudioConfiguration config) API は、現在のサウンドシステム設定のグローバル変更を読み込んで適用できます。AudioSettings.SetDSPBufferSize(…) 関数と AudioSettings.outputSampleRate、AudioSettings.speakerMode には、プロパティの修正に伴いオーディオシステム全体が再初期化されてしまうという副作用がありましたが、それらはこの API に実質的に差し換えられます。
この API は AudioSettings.OnAudioConfigurationChanged(bool device) を定義し、スクリプトにオーディオ設定の変更を通知するコールバックをセットアップします。これは実際のデバイスの変更や、スクリプトにより起動した設定によって、行うことができます。
オーディオシステムのグローバル設定がランタイムで変更されるたびに、すべてのオーディオオブジェクトをリロードする必要があることに注意してください。これは、ディスクベースの AudioClip アセットやオーディオミキサーでは問題ありませんが、スクリプトで生成または変更された AudioClip は失われるため、再作成する必要があります。同様にプレイ状態も失われるので、これらは AudioSettings.OnAudioConfigurationChanged(…) コールバックによって再作成される必要があります。
詳細や参考例は、スクリプト API リファレンスを参照してください。
AudioSetting