Version: Unity 6.0 (6000.0)
言語 : 日本語
ウェブブラウザーの互換性
ウェブ開発と公開プロセス

技術的制約

ウェブブラウザーで実行するように設計された Unity のウェブアプリケーションには、ウェブテクノロジーによる制限が課せられます。ウェブプラットプラットフォーム用のアプリケーションをビルドする前に、以下の技術的な制限を確認してください。

プラットフォームのサポート

ほとんどの一般的なデスクトップブラウザーのバージョンは、Unity ウェブコンテンツをサポートしていますが、ブラウザーによってサポートレベルが異なることに注意してください。

ウェブビルドにおいては、プラットフォーム自体の制約により以下の機能を使用できない、または制限されている場合があります。

Visual Studio でウェブビルドのデバッグがサポートされていない

ウェブビルドのデバッグは Visual Studio ではサポートされていません。詳細は、ウェブビルドのデバッグとトラブルシューティングを参照してください。

Unity キャッシュとキャッシングスクリプトがサポートされていない

ブラウザーでファイルシステムへのアクセスが制限されているため、ウェブビルドでは Unity Cache と Caching Scripting API をサポートしていません。アセットデータおよび AssetBundles に対するネットワークリクエストは、代わりにブラウザーキャッシュへキャッシュされます。ウェブのキャッシュ動作を参照してください。

スレッドがサポートされない

JavaScript にスレッドサポートがないため、スレッドはサポートされていません。これはパフォーマンス向上のための Unity の内部的なスレッド使用にも、スクリプトコードやマネージ DLL でのスレッド使用にも適用されます。基本的に、System.Threading 名前空間の要素はサポートされません。

ネットワークの制限

ウェブプラットフォームでサポートしていないネットワーク機能がいくつかあります。

  • ブラウザーではセキュリティ保護のため、ネットワーク機能で IP ソケットに直接アクセスすることができません。詳細は、ウェブネットワークを参照してください。

  • System.Net 名前空間内の .NET ネットワーククラスはサポートされません。

  • ウェブプラットフォームは、ブラウザー内のセキュリティ制限のためネイティブソケットアクセスをサポートしていません。したがって、ウェブでは ICMP ping や UnityEngine.Ping などの機能もサポートしません。

グラフィックスの制限

WebGL グラフィックス API のウェブプラットフォームには、いくつかの制限がありますが、これは OpenGL ES グラフィックスライブラリの機能に基づいています。詳細については、ウェブグラフィックスを参照してください。

オーディオの制限事項

ウェブビルドでは、Web Audio API に基づいてオーディオにカスタムバックエンドを使用しますが、これは基本的なオーディオ機能しかサポートしません。詳細については、ウェブのオーディオを参照してください。

コードの動的生成

ウェブは AOT プラットフォームであるため、System.Reflection.Emit を使用したコードの動的生成はできません。これは、他のすべての IL2CPP プラットフォーム、iOS、ほとんどのコンソールで同じです。

マルチスレッドサポート

Unity はネイティブ C/C++ コードのマルチスレッドサポートを提供していますが、WebAssembly の制限により、ウェブプラットプラットフォームはまだ C# マルチスレッドをサポートしていません。つまり、ウェブプラットプラットフォームを使用してビルドされたアプリケーションは、単一の C# スレッドで実行する必要があります。

ノート:

ウェブプラットフォームで複雑な非同期タスクを実行するために推奨される方法は、コルーチンを使用することです。詳細については、コルーチンのドキュメントを参照してください。

以下の要因によって、マルチスレッドのサポートが制限されています。

ネイティブスタックスキャンの制約

ウェブプラットフォームは WebAssembly を使用しています。これは、Unity コードをウェブブラウザーで安全かつ効率的に実行するためのバイトコード形式です。ウェブブラウザーは、ネイティブの WebAssembly スタックへの直接アクセスをブロックし、安全で分離された環境でコードを実行するように設計されています。ウェブガベージコレクターは、他のプラットフォームで複数のフレームにわたってインクリメンタルに実行されるのとは異なり、各フレームの終了時に 1 回だけ実行されるため、これはマルチスレッドのガベージコレクションに影響します。

スレッドシグナリングの先行サポートがない

バックグラウンドワーカーは、ウェブ上で互いに独立して並列にコードを実行します。ネイティブプラットフォームでは、メインスレッドが他のスレッドに同期して信号を送り、ガベージコレクションを一時停止できます。ウェブではこの同期シグナリングがサポートされていないため、WebAssembly でコンパイルされた C# コードを複数のスレッドで実行することができません。

ビルドと実行の制限

Unity は、基本機能のみを備えたウェブサーバーを使用して、ビルドと実行 (メニューで Edit > Build Profiles > Build and Run を選択) で作成されたウェブビルドをホストします。

このサーバーはデータ キャッシュをサポートしてないため、以下のものに影響します。

  • .data ファイル (AssetBundles または Addressables を使用しないビルドのすべてのシーンとアセットを含みます)。
  • Addressables ファイルと AssetBundle ファイル。

追加リソース

ウェブブラウザーの互換性
ウェブ開発と公開プロセス