これはシンプルな対処法ですが、割と現実的です。
WebGLビルドで作成されたフォルダ内にあるJSONファイルのメモリサイズ項目を書き換えるだけです。
確認したUnityのバージョン Unity 2019.4.35.f1
Unityの2021以降でメモリ関係のエラーが出る場合、本記事で説明する~.jsonファイル自体が存在しないため、以下記事の対処方法を試してみてください。
手順
ビルドしたフォルダ内にある Buildフォルダを開く。
Player Settings…のProduct Name項目で設定した名称(Product Nameを設定していなければプロジェクト名)の ~.json ファイルがあるのでエディタを使って開く。
TOTAL_MEMORYの項目の数値がWebGL実行時に割り当てられたメモリー。単位はバイト。
この数値を増やす。
ここで、どれくらい増やす必要があるかはMemory Profiler等でチェックする必要がある。(後述)
TOTAL_MEMORY項目はデフォルトで268435456Byte(=256MB)に設定されているようです。
268435456(Byte) ÷ 1024 ÷ 1024 = 256(MB)
例えば、倍の512MBにしたい場合、
512(MB) × 1024 × 1024 = 536870912(Byte)
をTOTAL_MEMORYの数値に設定します。
基本的には16の倍数が良いようです。
実際に増やした例
わたしの場合、実行に必要なメモリが370MBだったので、余裕を見て512MBとして次のように計算した。
512(MB) × 1024 × 1024 = 536870912(Byte)
一応これで「Out of memory…」のメッセージは表示されなくなり、問題なく動作した。
TOTAL_MEMORYを上げ過ぎると、実行端末自体のメモリが足りなくてブラウザがとまってしまったり動きが怪しくなったりすると思う。注意されたし。
実行時に必要なメモリ量を知るには?
プロジェクトを実行した際の必要なメモリ量は、UnityのPackage ManagerからMemory Profilerをインストールすることで知ることができる。
以下を参考にしてください。
コメント
Unity2021以降の対処方法を教えてください
fjさん、おはようございます。管理人です。
記事とエラーメッセージは異なりますが、Unity2021以降でのWebGLメモリの対処方法は当サイトの以下の記事を参考にしてみてください。
Unity2021:WebGL実行エラー「Cannot enlarge memory arrays.」が出る場合の対処