WebGL ビルド オプションでは、コンテンツを HTML5技術と WebGL の描画APIを使った JavaScript プログラムとして公開することができます。これは対応ウェブブラウザで実行することができるものです。WebGL 用にコンテンツをビルドおよびテストするには、Build Player ウィンドウでビルドターゲットに WebGL を選択し、Build & Run をクリックしてください。
WebGL で実行するには、すべてのコードが JavaScript で書かれている必要があります。Unity では Emscripten コンパイラーツールチェーンを使用して Unity ランタイムコード(C および C++ で記述されている)を asm.js JavaScript にクロスコンパイルしています。asm.js は最適化可能な JavaScript のサブセットで、asm.js コードを JavaScript エンジンによって非常に効率のよいネイティブコードに AOT コンパイルできるようにするものです。
Unity では、.NET ゲームコード(C# や UnityScript スクリプト)を JavaScript に変換するのに IL2CPP と呼ばれる技術を使っています。IL2CPP は .NET バイトコードを、対応する C++ ソースファイルに変換します。それが Emscripten を使ってコンパイルされることでスクリプトが JavaScript に変換されます。早期アクセス版においてはこの変換プロセスが互換性の問題を引き起こす可能性があります。この問題はいずれ解決される予定ですが、現在のところも、スレッドや動的生成の機能を要求しない限りは正常に機能するはずです。
Unity WebGL コンテンツはほとんどの有名なデスクトップブラウザの最新バージョンでサポートされていますが、各ブラウザの提供する サポートのレベルには差があります。 モバイルデバイスでは現在 Unity WebGL はサポートされていません。
プラットフォームの制限があるため、 Unity の全要素が WebGL のビルドで使用できるわけではありません。以下の要素は特にその影響を受けます。
スレッドは JavaScript でスレッドサポートがないためサポートされていません。これは Unity の内部的なパフォーマンス向上のためのスレッド使用、スクリプトでのスレッド使用やマネージドDLL にも適用されます(基本的に System.Threading
名前空間の要素は使用できないということです)。
WebGL ビルドは MonoDevelop や Visual Studio でデバッグすることができません。 WebGL ビルドでのデバッグとトラブルシューティング を参照してください。
ブラウザではセキュリティ保護のため、ネットワーキングのために IP ソケットに直接アクセスすることができません。 WebGL ネットワーキング を参照してください。
WebGL グラフィックス API は OpenGL ES 2.0 相当のものであり、いくらかの制限があります。 WebGL グラフィックス を参照してください。
WebGL ビルドは Web Audio API を基礎とした Audio のカスタムバックエンドを使用します。このバックエンドは基本的なオーディオ機能のみをサポートしています。 WebGL におけるオーディオの使用 を参照してください。
WebGL は AOT プラットフォームです。そのため、 System.Reflection.Emit
を使用した動的コード生成は使用できません。これは他の IL2CPP プラットフォームである iOS やほとんどのコンソールと同じことです。