Unity/負荷軽減/Memory
提供: 初心者エンジニアの簡易メモ
目次
メモリ対策
- プロジェクトを、一旦閉じて開く
- Unityメインメニュー/Windows/Analysis/Profiler/Memory/TotalCommitedMemoryを確認
閉じて、開かないと、メモリが蓄積するので、一度、プロジェクトは閉じる。
MemoryProfilerPackageインストール
- Unityメインメニュー/Windows/PackageManagerで、MemoryProfilerを検索してインストール。
確認
差分確認
Packages/packages-lock.json
+ "com.unity.memoryprofiler": { + "version": "1.1.0", + "depth": 0, + "source": "registry", + "dependencies": { + "com.unity.editorcoroutines": "1.0.0" + }, + "url": "https://packages.unity.com" + },
Packages/packages-lock.json
+ "com.unity.memoryprofiler": { + "version": "1.1.0", + "depth": 0, + "source": "registry", + "dependencies": { + "com.unity.editorcoroutines": "1.0.0" + }, + "url": "https://packages.unity.com" + },
メモリ使用しているオブジェクト名の確認
- MemoryProfiler/Captureボタンを押す
Captureファイルは、プロジェクト直下の、MemoryCapturesの直下に、置かれる。
UnityObjecsの項目
公式:https://docs.unity3d.com/Packages/com.unity.memoryprofiler@1.1/manual/unity-objects-tab.html
Description 個々のオブジェクトまたはオブジェクトのグループの名前を表示します。無効にすることはできません。 Allocated Size オブジェクトまたはオブジェクトのグループに割り当てられたメモリの量をバイト単位で表示します。 Resident Size オブジェクトまたはオブジェクトのグループが常駐するメモリの量をバイト単位で表示します。 % Impact オブジェクトまたはオブジェクトのグループが使用するメモリの量を、[テーブル内の割り当てられたメモリ]値のパーセンテージとして表示します。「テーブル内の割り当てられたメモリ」バーを含むすべての測定バーは、テーブル内で選択されたオブジェクトに基づいて動的に調整されます。 Native Size [割り当てサイズ]値のうちネイティブ メモリが占める割合を表示します。 Managed Size 割り当てサイズの値のうち、管理対象メモリがどのくらいの量を占めているかを表示します。 Graphics Size [割り当てサイズ]値のうち、グラフィックス メモリがどのくらいの量を占めているかを表示します。
Texture2Dについて
プラットフォームごとに、サイズが異なるので、一旦PCで計測。
標準設定
MaxSize:2048 ResizeAlgorithm:mitchell Format:Automatic Compression:NormalQuality UseCrunchCompression:off
公式:https://docs.unity3d.com/ja/2022.3/Manual/class-TextureImporter.html
2.4Mの画像サイズで(2652px:1658px)の場合、メモリ消費は、2.5Mでした。
UseCrunchCompressionについて
公式
使用可能な場合は、クランチ圧縮を使用します。クランチは DXT テクスチャや ETC テクスチャの圧縮に使用できる不可逆圧縮形式です。テクスチャは CPU で DXT か ETC に解凍され、ランタイムに GPU に読み込まれます。クランチ圧縮は、ディスク上やダウンロード時に使用するスペース量をできるだけ少なくしたいときに役立ちます。クランチテクスチャは、圧縮するのにかなり時間がかかりますが、ランタイムでの解凍は高速です。
- UseCrunchCompression : offで、メモリ消費は、2.5Mに
- UseCrunchCompression : onで、50%としたとき、メモリ消費は、1.4Mに
Compressionについて
- LowQualityにしたとき、メモリ消費は、2.5Mに
- NormalQualityにしたとき、メモリ消費は、2.5Mに
- HighQualityにしたとき、メモリ消費は、5.0Mに
外部ツールで圧縮した場合
メモリ消費は、変わらない。
MaxSizeについて
縦横の上限pxがこれを超えてたら、アスペクト維持で、そのサイズになるとかかも。
- 2048のとき、メモリ消費は、2.5Mに
- 1024のとき、メモリ消費は、0.6Mになるが、画質は落ちる
- 512のとき、メモリ消費は、160.5Kになるが、画質はすごく落ちる
Project側の初期ファイル
Editor
Texture2D
GizmoIconAtlas_pix32 21.3MB UnitySplash-Dark 21.3MB UnitySplash-Light 21.3MB Inter-Regular Atlas 2.0MB InterSemiBold Atlas 2.0MB d_FolderOpened Icon 0.7MB d_SceneAsset Icon 0.7MB d_Folder Icon 0.7MB d_cs Icon 0.7MB d_GameObject Icon 0.7MB ParticleSystemForceField Gizmo 0.7MB EmojiOne 0.7MB
Shader
Particles/Standard Surface 72.3MB Nature/SpeedTree8 25.6MB Nature/Terrain/Standard 3.0MB Nature/Terrain/Specular 2.8MB Nature/SpeedTree 2.5MB Hidden/TerrainEngine/Splatmap/Standard-AddPass 2.0MB
Project側の実機初期ファイル
Texture2D
UnityNHxRoughness 64.6KB Soft 21.8KB UnityHalo 8.6KB UnityAttenuation 4.6KB UnityGrayscaleRamp 4.6KB UnityWatermark-dev 4.3KB UnityDefault2D 2.6KB
Shader
Hidden/Internal-GUIRoundedRectWithColorPerBorder 66.8KB Hidden/Internal-GUIRoundedRect 62.0KB Hidden/Internal-GUITextureClip 52.9KB Skybox/Procedural 62.2KB Hidden/Internal-GUITexture 42.3KB Hidden/Internal-Loading 40.0KB Scripts/Default 39.6KB Hidden/InternalErrorShader 36.5KB Hidden/BlitCopy 26.3KB