Version: 2019.4
WebGL の Player 設定
WebGL のブラウザー間での互換性

WebGL での開発を始めるにあたって

Unity WebGL とは?

WebGL ビルド オプションでは、コンテンツを HTML5/JavaScript、WebAssembly、WebGL レンダリング API とその他のウェブ標準技術を使う JavaScript プログラムとして、ウェブブラウザーで公開することができます。WebGL 用にコンテンツをビルドしテストするには、Build Player ウィンドウでビルドターゲットに WebGL を選択し、Build & Run をクリックしてください。

技術的概要

emscripten コンパイラーツールチェーンを使用して、Unity のランタイムコード (C と C++で記述) を WebAssembly (Wasm とも呼ばれている) にクロスコンパイルしています。Wasm は、サイズが小さく、ロードタイムとメモリの効率が良く、ネイティブに近い速度で実行できるように設計されています。Unity での WebAssembly についての詳細は、こちらの ブログ を参照してください。

.NET のゲームコード (C# のスクリプト) を WebAssembly に変換します。IL2CPP と呼ばれる技術を使用します。IL2CPP は、.NET のバイトコードを受け取り、対応する C++ のソースファイルに変換し、emscripten を使ってコンパイルし、スクリプトを Wasm に変換します。

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

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 に置き換えられました

  • 2018.2 から WebAssembly を asm.js に置き換えました。

  • 2019.1 で削除された asm.js

WebGL の Player 設定
WebGL のブラウザー間での互換性