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 は AudioSettings.OnAudioConfigurationChanged(bool device)を定義し、スクリプトにオーディオ設定の変更を通知するコールバックをセットアップします。これは実際のデバイスの変更や、スクリプトにより起動した設定によって、行うことができます。
オーディオシステムのグローバル設定がランタイムで修正される度に、すべてのオーディオ オブジェクトの再読み込みが必要です。これは、ディスクベースの AudioClip アセットやオーディオミキサーでは問題ありませんが、スクリプトによって生成や修正された AudioClip は失われるので再作成される必要があります。同様にプレイ状態も失われるので、これらは AudioSettings.OnAudioConfigurationChanged(…) コールバックによって再作成される必要があります。
詳細や参考例は、スクリプト API リファレンスを参照してください。