このページでは、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 を使用します。 |
セキュリティ上の理由から、ブラウザーは、エンドユーザーがマウスのクリック、タッチイベント、キーの押下などでアプリケーションのウェブページを操作するまで、オーディオの再生を許可しません。ローディングスクリーンを使用して、エンドユーザーがアプリケーションと相互作用できるようにし、主要コンテンツが始まる前にオーディオ再生を開始します。
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.