Unityでフリーホラゲ作成中にエラーでビルドできなくてめっちゃ困ったので解決法をメモしておきます。
後日追記
単純にWebGL切り替え→ビルド すると発生するエラーかもしれません。
まずは単純にクリーンビルドを試してみてください。
確認された環境
エディタのバージョン:Unity 2022.2.17f1 および Unity 2023.2.9f1
テンプレート:3D (URP)
出力されたエラー
ビルド時に下記エラーが出力された。
shader error in ‘universal render pipeline/lit’: maximum ps_5_0 sampler register index (16) exceeded
サンプラーの上限を超えたとか何とかいうエラー。そこまで大規模な3Dゲームを作ってるわけではなかったので、なぜ出たのか不明だった。
原因
光の表現を豪華にするLight Cookiesという機能があり、そいつがサンプラーを大量消費する模様。そのため、使用しているテクスチャの数が大したことなくても、上記エラーを吐くことがあるようだ。
下記フォーラムで様々議論されているが、結構バグっぽい挙動にも関わらず、長期間修正されていない模様。
Access Denied
ハイクオリティゲームを作ってる方ならともかく、フリーゲームレベルでは絶対に不要だと思うので、この機能を切ってしまえばよい。
解決法
下記ページの方法に従い、Light Cookiesのサポートをオフにし、クリーンビルドする。
Unity - Manual: Cookies
- [プロジェクト設定] ウィンドウを開きます ( [編集] > [プロジェクト設定] )。
- [エディター]を選択してエディターの設定を開きます。
- 「グラフィックス」セクションに移動します。
- [ベイクした Cookie のサポートを有効にする]を切り替えます。
設定変更後、普通にビルドすると前設定のバグが残ったままになるので、ビルドボタン横のプルダウンからClean Buildを選んでリビルドするとエラーが回避できました。