このページでは、WebGL のオーディオ機能に関する情報のみを提供しています。Unity プロジェクトでオーディオを使用する方法については、オーディオの概要 を参照してください。
Unity は FMOD を使用してプラットフォームのオーディオを管理するため、Unity WebGL は、基本機能のみを含む限定されたオーディオ機能をサポートします。FMOD はスレッドに依存しており、WebGL はこれをサポートしていません。このため、Unity では、内部の Web Audio API に基づいた実装を採用し、ブラウザーでオーディオの再生やミキシングを処理できるようにしています。
ノート: Google Chrome の新しい自動再生ポリシーでは、特定の条件下で音声や動画の自動再生が阻止されます。例えば、ロードされた後すぐに BGM が自動再生されるように設定されているゲームがありますが、ウェブサイトをクリックまたはタップしない限り、自動的に再生されることはありません。このポリシーを有効または無効にする方法の詳細については、Google Chrome のドキュメント(Chrome の自動再生ポリシー) を参照してください。
Unity WebGL は以下の API クラスをサポートしています。
クラス | WebGL サポート状況 |
---|---|
AudioSource | WebGL はいくつかの API をサポートします。具体的なサポート内容については、AudioSource を参照してください。 |
AudioListener | すべての API に対応しています。 |
AudioClip | WebGL はいくつかの API をサポートしています。具体的なサポート内容については、AudioClip を参照してください。 |
SystemInfo.supportsAudio | ブラウザーは WebGL のオーディオサポートを提供しています。このため、 SystemInfo.supportsAudio は常に true です。 |
Microphone | 不対応。 |
AudioSource API は、以下のような基本的な位置に関するオーディオ再生をサポートしています。
Unity WebGL は、以下の AudioSource API をサポートします。
Settings | 説明 |
---|---|
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 を再生し、AudioSource の音量を volumeScale でスケールします。 |
PlayScheduled | 指定した時間にオーディオソースを再生します。 |
SetScheduledEndTime | スケジュールされた AudioSource.clip が終了する時間を設定します。 |
SetScheduledStartTime | スケジュールされた AudioSource.clip の開始時間を設定します。 |
Stop |
AudioSource.clip の再生を停止します。 |
UnPause | 一時停止した AudioSource.clip を解除します。 |
PlayClipAtPoint |
AudioSource.clip をワールド空間の指定された位置で再生します。 |
Unity WebGL は、ほとんどのブラウザーでサポートされている AAC フォーマットの AudioClip ファイルをインポートします。Unity WebGL は以下の AudioClip API をサポートします。
Properties | 説明 |
---|---|
length | AudioClip の長さ (秒単位)。 |
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 を部分的にサポートしています。このメソッドは、AudioClip のコンテンツを置き換えるためにのみ使用できます。WebGL では、Unity は offsetSample パラメーターを無視します。 |
ノート: Linux でオーディオクリップをサポートするには、ffmpeg パッケージがインストールされていることを確認してください。
Unity の WebGL で圧縮オーディオを使用するには、AudioClip loadType を以下のいずれかのオプションに設定します。
圧縮方法 | 説明 | 配慮事項 |
---|---|---|
CompressedInMemory | ディスク上のオーディオを圧縮し、アプリケーションのメモリにロードされた後も圧縮された状態を維持するために使用します。 | 圧縮されたオーディオは遅延が発生し、オーディオの再生に関しては精度が低くなります。しかし、圧縮されたオーディオは、解凍されたオーディオよりも、アプリケーションで使用するメモリが少なくて済みます。BGM など、精度の影響を受けないオーディオには、 CompressedInMemory の使用が最良の実践方法です。 |
DecompressOnLoad | CompressedInMemory と同様にディスク上のオーディオを圧縮し、アプリケーションメモリにロードする際に解凍するために使用します。 | 解凍されたオーディオは、圧縮されたオーディオと比較してかなりの量のメモリを使用しますが、遅延が少なく、オーディオの柔軟性が高くなります。精度の影響を受けるオーディオ (例えば、キャラクターのダイアログや効果音など) には、DecompressedOnLoad を使用します。 |
セキュリティ上の理由から、ブラウザーは、エンドユーザーがマウスのクリック、タッチイベント、キーの押下などでアプリケーションのウェブページを操作するまで、オーディオの再生を許可しません。ローディングスクリーンを使用して、エンドユーザーがアプリケーションと相互作用できるようにし、主要コンテンツが始まる前にオーディオ再生を開始します。