概要
以前、Unity2019以降向けの記事としてWebGLのMemorySizeの指定方法を投稿したのですが、Unity2022では設定方法が変更されていたので、改めてUnity2022以降向けの設定方法を記載します。
設定方法
Player Settings > Publising settingsから設定を行います。
Initial Memory Size
WASM ヒープメモリの初期値を設定します。初期値は32MBです。 Unity2022以前は16MBの倍数で設定する必要があった為、最小値は16MBでしたが、Unity2022以降では16MBの倍数制限が無くなった為、それより小さい値を設定可能です。但し、7MB未満の値を指定した場合、Stack用の領域が確保出来ないという理由でビルドエラーになるいことを確認しています。つまり、Unity2022.2においてWASM ヒープメモリの最小値は7MBとなります。
Memory Growth Mode
WASMヒープメモリーが不足し、領域を拡張する必要がある場合、どのように拡張するかを指定することが出来ます。
None
この設定の場合、領域を拡張しません。つまりInitial Memory Sizeで指定した値が、WASMヒープの最大値となります。
Linear
Linear Memory Growth Step
で指定した、固定長で領域の拡張を行います。
Unity2022以前と互換性を保つのであれば、Memory Growth Mode
:Linear
、Linear Memory Growth Step
:16MB
を指定することになります。
Geometric
Geometric Memory Growth Step
とGeometric Memory Growth Cap
から拡張する値を決定します。
Geometric Memory Growth Step
現在のヒープサイズにこの値をかけて、拡張する値を決定します。 例えば、現在のヒープサイズは16MBでGeometric Memory Growth Stepの値が0.2の場合、拡張する値は16 * 0.2 = 3.2MBとなります。
Geometric Memory Growth Cap
Geometric Memory Growth Stepに対する制限です。 例えば、この値が3MBの場合、Geometric Memory Growth Stepの値は3.2MBではなく3MBとなります。
Maximum Memory Size
拡張されたヒープの最大値です。 Memory Growth ModeがLinear及びGeometricの場合でも、この値を超えて拡張されることはありません。
スクリプトから指定する場合
相変わらずスクリプトリファレンスには記載がありませんが、各項目と変数名の対比は下記の通りです。
項目 | 変数名 |
---|---|
Initial Memory Size | PlayerSettings.WebGL.initialMemorySize |
Maximum Memory Size | PlayerSettings.WebGL.maximumMemorySize |
Memory Growth Mode | PlayerSettings.WebGL.memoryGrowthMode |
Linear Memory Growth Step | PlayerSettings.WebGL.linearMemoryGrowthStep |
Geometric Memory Growth Step | PlayerSettings.WebGL.geometricMemoryGrowthStep |
Geometric Memory Growth Cap | PlayerSettings.WebGL.memoryGeometricGrowthCap |
以上です。