WebGL ビルド オプションでは、コンテンツを HTML5 技術と WebGL の描画 APIを使った JavaScript プログラムとして公開することができます。これは対応 web ブラウザで実行することができるものです。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 ビルドは Visual Studio でデバッグできません。WebGLビルドのデバッグとトラブルシューティング を参照してください。
ブラウザではセキュリティ保護のため、ネットワーク機能で IP ソケットに直接アクセスすることができません。 WebGL ネットワーキング を参照してください。
WebGL グラフィックス API は OpenGL ES 2.0 や 3.0 と同等で、ある制限があります。詳細は WebGL グラフィックス を参照してください。
WebGL ビルドは Web Audio API を基礎とした Audio のカスタムバックエンドを使用します。このバックエンドは基本的なオーディオ機能のみをサポートしています。 WebGL におけるオーディオの使用 を参照してください。
WebGL は AOT プラットフォームです。そのため、 System.Reflection.Emit
を使用した動的コード生成は使用できません。これは他の IL2CPP プラットフォームである iOS やほとんどのコンソールと同じことです。
2018–03–19 限られた 編集レビュー で修正されたページ
MonoDevelop は 2018.1 以降 Visual Studio に置き換えられました