unityでいってみよう!

unityがチョットワカル位の人のブログ

Unity2019以降でWebGLのMemorySizeを指定してみよう!

概要

Unity2018まではPlayerSettingsからMemorySizeを設定出来たのですが、Unity2019以降では項目が無くなりました。 そこでUnity2019以降でMemorySizeを指定するにはどうしたら良いのかというお話しです。

r

なお、Unity2022以降に関しては設定方法が大きく変わっていますので以下をご確認下さい。

unityletsgo.hatenablog.com

結論

PlayerSettings.WebGL.memorySizePlayerSettings.WebGL.emscriptenArgsから設定を行います。

PlayerSettings.WebGL.memorySize

WebGLのメモリの初期値をMB単位で設定します。16の倍数で設定する必要がありますが、16の倍数以外を設定した場合、内部的に16の倍数へ切り上げます。初期値は16MBです。

// MemorySizeの初期値を32MBに設定する
PlayerSettings.WebGL.memorySize = 32;

PlayerSettings.WebGL.emscriptenArgs

初期値では、メモリが不足した場合、メモリをあらたに確保するような設定になっています。 つまり、Memoryの初期値は16MBですが、不足すると16MB->32MBと動的にメモリサイズを増やしていきます。 この動的なメモリの拡張を制限したい場合、PlayerSettings.WebGL.emscriptenArgsから設定を行います。

ALLOW_MEMORY_GROWTH

この値でメモリの拡張を行うかを設定します。

// 動的な拡張を行わない
PlayerSettings.WebGL.emscriptenArgs ="-s ALLOW_MEMORY_GROWTH=0";

// 動的な拡張を行う
PlayerSettings.WebGL.emscriptenArgs ="-s ALLOW_MEMORY_GROWTH=1";

初期値は動的な拡張を行うとなっています。

WASM_MEM_MAX

メモリ拡張の最大値を設定する為に使用します。

// メモリ最大値を512MBに設定する
PlayerSettings.WebGL.emscriptenArgs = "-s WASM_MEM_MAX=512MB";

最大サイズは2032とUnityBlogには記載されています。

まとめ

はじめから、メモリを512MB確保してメモリ拡張を行わない場合

PlayerSettings.WebGL.memorySize = 512;
PlayerSettings.WebGL.emscriptenArgs ="-s ALLOW_MEMORY_GROWTH=0";

初期値は32MBで、最大512MBまで拡張する

PlayerSettings.WebGL.memorySize = 32;
PlayerSettings.WebGL.emscriptenArgs ="-s ALLOW_MEMORY_GROWTH=1";
PlayerSettings.WebGL.emscriptenArgs += "-s WASM_MEM_MAX=512MB";