Web のオーディオ
Information about audio capabilities in Web.
読み終わるまでの所要時間 13 分最終更新 1ヶ月前
このページでは、Web プラットフォームのオーディオ機能に関する情報のみを提供しています。Unity プロジェクトでオーディオを使用する方法については、オーディオの概要 を参照してください。
Unity はプラットフォームのオーディオ管理に FMOD を使用するため、Web プラットフォームでは、基本機能のみを含む限られたオーディオ機能がサポートされます。FMOD はスレッドに依存しますが、WebGL API はこれをサポートしていません。このため、Unity では、ブラウザーでオーディオの再生とミキシングを処理できる、内部の Web Audio API に基づいた実装を使用しています。
注意Google Chrome の新しい自動再生ポリシーでは、特定の条件下でのオーディオとビデオの自動再生を禁止しています。例えば、ゲームがロードされた直後に背景音楽が自動的に再生されるように設定されている場合でも、ウェブサイトをクリックするかタップしない限り、自動的には再生されません。このポリシーを有効または無効にする方法の詳細については、Chromeの自動再生ポリシー に関する Google Chrome のドキュメントを参照してください。
対応可能なクラス
Unity Web は以下の API クラスをサポートしています。
クラス | WebGL サポート状況 |
|---|---|
| AudioSource | WebGL はいくつかの API をサポートしています。具体的なサポート内容については、AudioSource を参照してください。 |
| AudioListener | すべての API に対応しています。 |
| AudioClip | WebGL はいくつかの API をサポートしています。具体的なサポート内容については、AudioClip を参照してください。 |
| AudioMixer | WebGL はいくつかの API をサポートしています。具体的なサポート内容については、オーディオミキサー を参照してください。 |
| SystemInfo.supportsAudio | ブラウザーは WebGL のオーディオサポートを提供しています。このため、 |
| Microphone | 不対応。 |
AudioSource
AudioSource API は、以下のような基本的な位置に関するオーディオ再生をサポートしています。
- ポーズと再開
- ロールオフ
- ピッチ設定
- ドップラー効果対応
Unity WebGL は、以下の AudioSource API をサポートします。
設定 | 説明 |
|---|---|
| Clip | 次に再生するオーディオクリップを決定します。 |
| dopplerLevel | AudioSource のドップラースケールを設定します。 |
| ignoreListenerPause | AudioSource が、 |
| ignoreListenerVolume | エンドユーザーの AudioSource の音量を無視します。 |
| isPlaying | |
| loop | アプリケーションで |
| maxDistance | |
| minDistance | AudioSource.clip の音量がこれ以上上がらなくなる最小距離を設定します。最小距離を超えると、音が減衰し始めます。 |
| mute | AudioSource をミュートします。 |
| pitch | |
| playOnAwake | Awakeで AudioSource を再生します。 |
| rolloffMode | 距離による AudioSource の減衰量を設定します。 |
| time | 再生位置を秒単位で設定します。 |
| timeSamples | 再生位置をパルス符号変調 (PCM) サンプルで設定します。 |
| velocityUpdateMode | AudioSource の更新を固定更新ループで行うか、動的更新ループで行うかを設定します。 |
| volume | オーディオソースの音量を設定します (0.0 - 1.0)。 |
| Pause | |
| Play | |
| PlayDelayed | |
| PlayOneShot | AudioClip を再生し、volumeScale で AudioSource 音量をスケールします。 |
| PlayScheduled | 指定した時間にオーディオソースを再生します。 |
| SetScheduledEndTime | スケジュールされた |
| SetScheduledStartTime | スケジュールされた |
| Stop | |
| UnPause | 一時停止中の |
| PlayClipAtPoint | |
AudioClip
Unity WebGL は、ほとんどのブラウザーでサポートされている AAC 形式の AudioClip ファイルをインポートします。Unity WebGL は、以下の AudioClip API をサポートします。
プロパティ | 説明 |
|---|---|
| length | オーディオの長さ (秒単位)。 |
| loadState | AudioClip に関連付けられたオーディオデータの現在の読み込み状況を返します。 |
| samples | サンプルの AudioClip の長さ。 |
| loadType | クリップのロードタイプです。AudioClip のロードタイプは、Inspector で設定できます。 |
方法 | 説明 | その他の情報 |
|---|---|---|
| AudioClip.Create | 指定した名前と長さの AudioClip を作成します。 | Unity WebGL は、 |
| AudioClip.SetData | AudioSource.Clip のサンプルデータを設定します。 | Unity WebGL は、 |
| AudioClip.GetData | AudioSource.clip からサンプルデータを含む配列を取得します。 | Unity WebGL は、 |
注意Linux でオーディオクリップをサポートするには、ffmpeg パッケージがインストールされていることを確認してください。
オーディオミキサー
Unity Web は、オーディオミキサー アセットの一部の機能をサポートします。
Web 上のオーディオミキサーでは以下を行うことができます。
- オーディオミキサーアセットを作成する。
- 階層に AudioMixerGroup を追加する。
- 各グループの音量を調整する。スクリプトで音量を公開または変更するには、AudioMixer.SetFloat を使用します。
ノート: 音量は Web 上で変更できる唯一のプロパティです。その他のプロパティやサウンドエフェクトはサポートされません。
圧縮オーディオ
Unity の WebGL で圧縮オーディオを使用するには、AudioClip の loadType を以下のいずれかのオプションに設定します。
圧縮形式 | 説明 | 考慮事項 |
|---|---|---|
| CompressedInMemory | ディスク上のオーディオを圧縮し、アプリケーションメモリにロードした後も圧縮されたままにします。 | 圧縮オーディオは待ち時間の原因になる可能性があり、オーディオ再生の精度は低くなります。ただし、圧縮オーディオは、解凍オーディオよりもアプリケーションのメモリ使用量が少なくなります。精度に影響されないオーディオ、例えば背景音楽には |
| DecompressOnLoad | CompressedInMemory と同様にディスク上のオーディオを圧縮し、アプリケーションメモリにロードしたときに解凍します。 | 解凍オーディオは、圧縮オーディオと比較してメモリ使用量が大幅に増えますが、待ち時間が短く、オーディオの柔軟性が向上します。精度に影響されるオーディオには |
オーディオ再生とブラウザーのセキュリティ
セキュリティ上の理由から、ブラウザーは、エンドユーザーがマウスのクリック、タッチイベント、キーの押下などでアプリケーションのウェブページを操作するまで、オーディオの再生を許可しません。ロード画面を使用して、エンドユーザーがアプリケーションと相互作用できるようにし、主要コンテンツが始まる前にオーディオ再生を開始します。