このページでは、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 のオーディオサポートを提供しています。このため、SystemInfo.supportsAudio は常に true です。 |
| Microphone | 不対応。 |
AudioSource API は、以下のような基本的な位置に関するオーディオ再生をサポートしています。
Unity WebGL は、以下の AudioSource API をサポートします。
| 設定 | 説明 |
|---|---|
| Clip | 次に再生するオーディオクリップを決定します。 |
| dopplerLevel | AudioSource のドップラースケールを設定します。 |
| ignoreListenerPause | AudioSource が、AudioListener.pause を無視して、オーディオの再生を継続できるようにします。 |
| ignoreListenerVolume | エンドユーザーの AudioSource の音量を無視します。 |
| isPlaying |
AudioSource.clip が再生されている場合に true を返します。 |
| loop | アプリケーションで AudioSource.clip をループさせることができます。 |
| maxDistance |
AudioSource.clip の減衰が止まる、または聞き取れなくなる最大距離を設定します。 |
| minDistance | AudioSource.clip の音量がこれ以上上がらなくなる最小距離を設定します。最小距離を超えると、音が減衰し始めます。 |
| mute | AudioSource をミュートします。 |
| pitch |
AudioSource.clip のピッチを設定します。WebGL は正のピッチ値のみをサポートしています。 |
| playOnAwake | Awakeで AudioSource を再生します。 |
| rolloffMode | 距離による AudioSource の減衰量を設定します。 |
| time | 再生位置を秒単位で設定します。 |
| timeSamples | 再生位置をパルス符号変調 (PCM) サンプルで設定します。 |
| velocityUpdateMode | AudioSource の更新を固定更新ループで行うか、動的更新ループで行うかを設定します。 |
| volume | オーディオソースの音量を設定します (0.0 - 1.0)。 |
| Pause |
AudioSource.clip を一時停止します。 |
| Play |
AudioSource.clip を再生します。 |
| PlayDelayed |
AudioSource.clip を、秒単位で指定した遅延時間を付けて再生します。 |
| PlayOneShot | AudioClip を再生し、volumeScale で AudioSource 音量をスケールします。 |
| PlayScheduled | 指定した時間にオーディオソースを再生します。 |
| SetScheduledEndTime | スケジュールされた AudioSource.clip が終了する時間を設定します。 |
| SetScheduledStartTime | スケジュールされた AudioSource.clip の開始時間を設定します。 |
| Stop |
AudioSource.clip の再生を停止します。 |
| UnPause | 一時停止中の AudioSource.clip の一時停止を解除します。 |
| PlayClipAtPoint |
AudioSource.clip をワールド空間の指定された位置で再生します。 |
Unity WebGL は、ほとんどのブラウザーでサポートされている AAC 形式の AudioClip ファイルをインポートします。Unity WebGL は、以下の AudioClip API をサポートします。
| プロパティ | 説明 |
|---|---|
| length | オーディオの長さ (秒単位)。 |
| loadState | AudioClip に関連付けられたオーディオデータの現在の読み込み状況を返します。 |
| samples | サンプルの AudioClip の長さ。 |
| loadType | クリップのロードタイプです。AudioClip のロードタイプは、Inspector で設定できます。 |
| 方法 | 説明 | その他の情報 |
|---|---|---|
| AudioClip.Create | 指定した名前と長さの AudioClip を作成します。 | Unity WebGL は、AudioClip.Create を部分的にサポートしています。ブラウザーは動的ストリーミングをサポートしていません。そのため、AudioClip.Create を使用するには、Stream を false に設定してください。 |
| AudioClip.SetData | AudioSource.Clip のサンプルデータを設定します。 | Unity WebGL は、AudioClip.SetData を部分的にサポートしています。この方法は、Load Type が Decompress on Load に設定されている圧縮オーディオファイルに対してのみ使用できます。詳細については、圧縮オーディオ を参照してください。 |
| AudioClip.GetData | AudioSource.clip からサンプルデータを含む配列を取得します。 | Unity WebGL は、AudioClip.GetData を部分的にサポートしています。この方法は、Load Type が Decompress on Load に設定されている圧縮オーディオファイルに対してのみ使用できます。詳細については、圧縮オーディオ を参照してください。 |
注意Linux でオーディオクリップをサポートするには、ffmpeg パッケージがインストールされていることを確認してください。
Unity Web は、オーディオミキサー アセットの一部の機能をサポートします。
Web 上のオーディオミキサーでは以下を行うことができます。
ノート: 音量は Web 上で変更できる唯一のプロパティです。その他のプロパティやサウンドエフェクトはサポートされません。
Unity の WebGL で圧縮オーディオを使用するには、AudioClip の loadType を以下のいずれかのオプションに設定します。
| 圧縮形式 | 説明 | 考慮事項 |
|---|---|---|
| CompressedInMemory | ディスク上のオーディオを圧縮し、アプリケーションメモリにロードした後も圧縮されたままにします。 | 圧縮オーディオは待ち時間の原因になる可能性があり、オーディオ再生の精度は低くなります。ただし、圧縮オーディオは、解凍オーディオよりもアプリケーションのメモリ使用量が少なくなります。精度に影響されないオーディオ、例えば背景音楽には CompressedInMemory を使用するのがベストプラクティスです。 |
| DecompressOnLoad | CompressedInMemory と同様にディスク上のオーディオを圧縮し、アプリケーションメモリにロードしたときに解凍します。 | 解凍オーディオは、圧縮オーディオと比較してメモリ使用量が大幅に増えますが、待ち時間が短く、オーディオの柔軟性が向上します。精度に影響されるオーディオには DecompressedOnLoad を使用します (例えば、キャラクターのセリフやサウンドエフェクトなど)。 |
セキュリティ上の理由から、ブラウザーは、エンドユーザーがマウスのクリック、タッチイベント、キーの押下などでアプリケーションのウェブページを操作するまで、オーディオの再生を許可しません。ロード画面を使用して、エンドユーザーがアプリケーションと相互作用できるようにし、主要コンテンツが始まる前にオーディオ再生を開始します。