この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:3
ページ更新者:guest
更新日時:2026-06-11 07:07:02

タイトル: ブラウザゲームの公開
SEOタイトル: Unity WebGL ビルド&ブラウザゲーム公開ガイド(itch.io / Unity Play / 自前サーバー)

この本文には実行可能なタグ等が含まれるため、安全のためHTMLソースとして表示しています。本文データは変更していません。

<table border="1" cellpadding="6" cellspacing="0" style="border-collapse:collapse;background:#fffbea;border:1px solid #f4c430;margin:1em 0;width:100%"><tr><td style="background:#f4c430;color:#000;font-weight:bold;padding:8px">この記事の要点</td></tr><tr><td style="padding:10px"><ul><li>Unity でブラウザゲームを公開するには <strong>File → Build Settings → WebGL</strong> でプラットフォーム切り替え</li><li><strong>Player Settings</strong>: 解像度・圧縮形式(Brotli / Gzip)・WebAssembly Streaming</li><li>ビルド時間短縮: <strong>Code Stripping High / Compression Format = Brotli</strong>、初回ビルドは 30 分かかることも</li><li>公開先: <strong>itch.io</strong>(無料・最も簡単) / <strong>Unity Play</strong>(unity.com 提供) / <strong>自前サーバー</strong></li><li>自前サーバーは Apache/Nginx で <strong>.gz / .br ファイルの MIME type 設定</strong>が必須(Content-Encoding 付与)</li></ul></td></tr></table>
<h2>Unity WebGL とは</h2>

<p>Unity プロジェクトを <strong>WebAssembly + JavaScript</strong> にビルドし、ブラウザだけで動作させる仕組み。プラグインインストール不要で、URL を開くだけでゲームが起動します。</p>

<h2>WebGL ビルドの準備</h2>

<ol>
<li>Unity Hub → モジュール追加で <strong>WebGL Build Support</strong> をインストール</li>
<li>File → Build Settings → <strong>WebGL</strong> 選択 → <strong>Switch Platform</strong></li>
<li>初回プラットフォーム切替は 5-30 分(全アセット再インポート)</li>
</ol>

<h2>Player Settings 推奨設定</h2>

<table border="1" cellpadding="6" cellspacing="0" style="border-collapse:collapse;width:100%">
<thead><tr style="background:#e3f2fd"><th>項目</th><th>推奨値</th><th>理由</th></tr></thead>
<tbody>
<tr><td>Compression Format</td><td><strong>Brotli</strong>(最高圧縮) or Gzip(互換性)</td><td>転送量を 4-5 割削減</td></tr>
<tr><td>Decompression Fallback</td><td>Off(HTTPS のみ運用なら)</td><td>サイズ削減</td></tr>
<tr><td>Data Caching</td><td>On</td><td>2 回目以降の起動高速化(IndexedDB キャッシュ)</td></tr>
<tr><td>Code Optimization</td><td><strong>Speed</strong>(リリース時)</td><td>実行速度優先</td></tr>
<tr><td>Linker Target</td><td>WebAssembly</td><td>asm.js は非推奨</td></tr>
<tr><td>Managed Stripping Level</td><td><strong>High</strong></td><td>不要コードを除去してサイズ削減</td></tr>
<tr><td>Default Canvas Width / Height</td><td>960 × 600 等</td><td>HTML テンプレートに反映</td></tr>
</tbody>
</table>

<h2>ビルド</h2>

<ol>
<li>Build Settings → <strong>Build</strong>(実行せずファイル生成のみ)</li>
<li>出力フォルダを選ぶ → 5〜30 分待つ</li>
<li>出力構成:</li>
</ol>
<pre style="background:#1e293b;color:#e2e8f0;padding:1em;border-radius:6px;overflow-x:auto;line-height:1.5"><code class="language-text">WebGLBuild/
├── index.html              # 起動 HTML
├── Build/
│   ├── WebGLBuild.loader.js
│   ├── WebGLBuild.framework.js.br   # Brotli 圧縮 (or .gz)
│   ├── WebGLBuild.data.br
│   └── WebGLBuild.wasm.br
├── TemplateData/
│   ├── style.css
│   └── favicon.ico</code></pre>
<h2>ローカル確認(重要)</h2>

<p><code>file://</code> で開いても動きません。HTTP サーバーが必要です:</p>
<pre style="background:#1e293b;color:#e2e8f0;padding:1em;border-radius:6px;overflow-x:auto;line-height:1.5"><code class="language-bash"># Python 簡易サーバー
cd WebGLBuild
python3 -m http.server 8000
# → http://localhost:8000

# Unity 自体に試験サーバー: Build And Run で自動立ち上げ

# npx serve でも OK
npx serve -p 8000</code></pre>
<h2>公開先 1: itch.io(無料・最も簡単)</h2>

<ol>
<li><a href="https://itch.io">itch.io</a> でアカウント作成 → Upload new project</li>
<li>Kind of project: <strong>HTML</strong></li>
<li>WebGLBuild フォルダを zip 圧縮(Build / TemplateData / index.html を含める)</li>
<li>This file will be played in the browser にチェック</li>
<li>Viewport dimensions を Unity の Canvas サイズに合わせる</li>
<li>Save & view page</li>
</ol>

<p>itch.io は<strong>無料で広告なし</strong>、収益化(任意の値段 + 自動分配)も可能。</p>

<h2>公開先 2: Unity Play(公式ホスティング)</h2>

<p><a href="https://play.unity.com">play.unity.com</a> に Unity アカウントでログイン → <strong>Publisher Dashboard</strong> から WebGL ビルドの zip をアップロード。Unity 公式コミュニティに公開されます。</p>

<h2>公開先 3: 自前サーバー(Apache / Nginx)</h2>

<p>Brotli / Gzip 圧縮ファイルを配信する場合、<strong>Content-Encoding ヘッダの設定が必須</strong>です。設定しないと「Unable to parse Build/xxx.wasm」エラーで起動失敗します。</p>
<pre style="background:#1e293b;color:#e2e8f0;padding:1em;border-radius:6px;overflow-x:auto;line-height:1.5"><code class="language-apache"># .htaccess
<IfModule mod_mime.c>
    AddType application/octet-stream .data .wasm .symbols.json
    AddType application/javascript .js
</IfModule>

# Brotli 圧縮の場合
<FilesMatch "\.br$">
    AddType "application/octet-stream" .br
    Header set Content-Encoding br
</FilesMatch>

# Gzip 圧縮の場合
<FilesMatch "\.gz$">
    AddType "application/octet-stream" .gz
    Header set Content-Encoding gzip
</FilesMatch>

# .wasm の MIME type 修正
<FilesMatch "\.wasm$">
    AddType application/wasm .wasm
</FilesMatch></code></pre><pre style="background:#1e293b;color:#e2e8f0;padding:1em;border-radius:6px;overflow-x:auto;line-height:1.5"><code class="language-nginx"># Nginx の場合
server {
    listen 80;
    server_name game.example.com;
    root /var/www/game/WebGLBuild;

    location ~ \.wasm\.br$ {
        default_type application/wasm;
        add_header Content-Encoding br;
    }
    location ~ \.js\.br$ {
        default_type application/javascript;
        add_header Content-Encoding br;
    }
    location ~ \.data\.br$ {
        default_type application/octet-stream;
        add_header Content-Encoding br;
    }

    # gzip 版
    location ~ \.wasm\.gz$ {
        default_type application/wasm;
        add_header Content-Encoding gzip;
    }
}</code></pre>
<h2>ビルドサイズを減らすコツ</h2>

<ul>
<li><strong>Texture Import Settings</strong>: WebGL 用に <strong>Max Size 1024</strong> + <strong>Compressed</strong></li>
<li><strong>Audio</strong>: Vorbis 圧縮、Quality 50% 程度</li>
<li><strong>Code Stripping High</strong> でリフレクション削除(IL2CPP)</li>
<li><strong>Addressables</strong> で必要時のみダウンロード</li>
<li><strong>Asset Bundles</strong> で起動時の DL を分割</li>
</ul>

<h2>iframe で埋め込む</h2>

<p>自分のサイトに埋め込みたい場合:</p>
<pre style="background:#1e293b;color:#e2e8f0;padding:1em;border-radius:6px;overflow-x:auto;line-height:1.5"><code class="language-html"><iframe
    src="https://example.com/game/index.html"
    width="960"
    height="600"
    frameborder="0"
    allowfullscreen
    allow="autoplay; fullscreen; gamepad">
</iframe></code></pre>
<h2>よくあるトラブル</h2>

<table border="1" cellpadding="6" cellspacing="0" style="border-collapse:collapse;width:100%">
<thead><tr style="background:#fff3e0"><th>症状</th><th>原因</th><th>対処</th></tr></thead>
<tbody>
<tr><td>Failed to download file ... .wasm</td><td>サーバの MIME type 設定漏れ</td><td>Content-Encoding 設定 / Decompression Fallback 有効化</td></tr>
<tr><td>UnauthorizedAccessException</td><td>PlayerPrefs の保存先がブラウザ制限</td><td>IndexedDB が使えるか確認、ローカルストレージ確認</td></tr>
<tr><td>音が出ない</td><td>ブラウザの autoplay policy</td><td>ユーザー操作後に AudioListener.volume を設定</td></tr>
<tr><td>iOS Safari でクラッシュ</td><td>メモリ不足</td><td>Texture を縮小、初期 Heap Size を下げる</td></tr>
</tbody>
</table>

<h2>FAQ</h2>

<p><strong>Q: モバイル対応はどうなる?</strong><br />
A: Unity 公式では「WebGL on mobile is not officially supported」だが、軽量なら動きます。タッチ操作は <code>Input.touchCount</code> で対応。</p>

<p><strong>Q: Unreal Engine でも WebGL ビルドできる?</strong><br />
A: UE4 までは可能でしたが、UE5 では HTML5 ターゲットは廃止されました。サードパーティの WebAssembly プラグインが必要。</p>

<p><strong>Q: WebGPU 対応は?</strong><br />
A: Unity 2023.2+ で Experimental サポート。Chrome 113+ で動作確認可能ですが、まだ実験段階です。</p>