「Unity/負荷軽減/Memory」の版間の差分
提供: 初心者エンジニアの簡易メモ
(→=UseCrunchCompressionについて) |
(→おすすめ) |
||
(同じ利用者による、間の31版が非表示) | |||
行35: | 行35: | ||
+ "url": "https://packages.unity.com" | + "url": "https://packages.unity.com" | ||
+ }, | + }, | ||
+ | </pre> | ||
+ | |||
+ | ==メモリ使用しているオブジェクト名の確認== | ||
+ | #MemoryProfiler/Captureボタンを押す | ||
+ | |||
+ | Captureファイルは、プロジェクト直下の、MemoryCapturesの直下に、置かれる。 | ||
+ | |||
+ | ==UnityObjecsの項目== | ||
+ | 公式:https://docs.unity3d.com/Packages/com.unity.memoryprofiler@1.1/manual/unity-objects-tab.html | ||
+ | |||
+ | <pre> | ||
+ | Description 個々のオブジェクトまたはオブジェクトのグループの名前を表示します。無効にすることはできません。 | ||
+ | Allocated Size オブジェクトまたはオブジェクトのグループに割り当てられたメモリの量をバイト単位で表示します。 | ||
+ | Resident Size オブジェクトまたはオブジェクトのグループが常駐するメモリの量をバイト単位で表示します。 | ||
+ | % Impact オブジェクトまたはオブジェクトのグループが使用するメモリの量を、[テーブル内の割り当てられたメモリ]値のパーセンテージとして表示します。「テーブル内の割り当てられたメモリ」バーを含むすべての測定バーは、テーブル内で選択されたオブジェクトに基づいて動的に調整されます。 | ||
+ | Native Size [割り当てサイズ]値のうちネイティブ メモリが占める割合を表示します。 | ||
+ | Managed Size 割り当てサイズの値のうち、管理対象メモリがどのくらいの量を占めているかを表示します。 | ||
+ | Graphics Size [割り当てサイズ]値のうち、グラフィックス メモリがどのくらいの量を占めているかを表示します。 | ||
</pre> | </pre> | ||
行51: | 行69: | ||
公式:https://docs.unity3d.com/ja/2022.3/Manual/class-TextureImporter.html | 公式:https://docs.unity3d.com/ja/2022.3/Manual/class-TextureImporter.html | ||
− | 2. | + | 2.4Mの画像サイズで(2652px:1658px)の場合、メモリ消費は、2.5Mでした。 |
===UseCrunchCompressionについて=== | ===UseCrunchCompressionについて=== | ||
公式 | 公式 | ||
行57: | 行75: | ||
使用可能な場合は、クランチ圧縮を使用します。クランチは DXT テクスチャや ETC テクスチャの圧縮に使用できる不可逆圧縮形式です。テクスチャは CPU で DXT か ETC に解凍され、ランタイムに GPU に読み込まれます。クランチ圧縮は、ディスク上やダウンロード時に使用するスペース量をできるだけ少なくしたいときに役立ちます。クランチテクスチャは、圧縮するのにかなり時間がかかりますが、ランタイムでの解凍は高速です。 | 使用可能な場合は、クランチ圧縮を使用します。クランチは DXT テクスチャや ETC テクスチャの圧縮に使用できる不可逆圧縮形式です。テクスチャは CPU で DXT か ETC に解凍され、ランタイムに GPU に読み込まれます。クランチ圧縮は、ディスク上やダウンロード時に使用するスペース量をできるだけ少なくしたいときに役立ちます。クランチテクスチャは、圧縮するのにかなり時間がかかりますが、ランタイムでの解凍は高速です。 | ||
</pre> | </pre> | ||
− | UseCrunchCompression : onで、50%としたとき、メモリ消費は、1.4Mに | + | *UseCrunchCompression : offで、メモリ消費は、2.5Mに |
+ | *UseCrunchCompression : onで、50%としたとき、メモリ消費は、1.4Mに | ||
===Compressionについて=== | ===Compressionについて=== | ||
− | * | + | *LowQualityにしたとき、メモリ消費は、2.5Mに |
− | * | + | *NormalQualityにしたとき、メモリ消費は、2.5Mに |
+ | *HighQualityにしたとき、メモリ消費は、5.0Mに | ||
+ | |||
+ | ===外部ツールで圧縮した場合=== | ||
+ | メモリ消費は、変わらない。 | ||
+ | |||
+ | ===MaxSizeについて=== | ||
+ | 縦横の上限pxがこれを超えてたら、アスペクト維持で、そのサイズになるとかかも。 | ||
+ | |||
+ | *2048のとき、メモリ消費は、2.5Mに | ||
+ | *1024のとき、メモリ消費は、0.6Mになるが、画質は落ちる | ||
+ | *512のとき、メモリ消費は、160.5Kになるが、画質はすごく落ちる | ||
+ | |||
+ | ==Audio== | ||
+ | ===LoadType=== | ||
+ | *Compressed in Load: メモリの容量はそのまま | ||
+ | *Compressed in Memory: メモリの容量を圧縮 (ただしvorbisで、品質が高いとCPU負荷が高くなる) | ||
+ | *Streaming: 読み込みながらなので、メモリもそこまで使わないが、in Memoryと同じぐらい、CPUは高い。 | ||
+ | |||
+ | ===ComporessionFromat=== | ||
+ | * PCM: SEに向いてるが、サイズが大きすぎるので、使わず、vorbisを使ったほうが良いかも。 | ||
+ | * Vorbis: BGMに向いてる | ||
+ | * ADPCM: SEでノイズのあるものに向いてる | ||
+ | |||
+ | |||
+ | 参考:https://www.cockatiel-net.com/blog/unity/unity_audio_load_3/ | ||
+ | |||
+ | 参考:https://amagamina.jp/blog/audio-clip/ | ||
+ | |||
+ | 参考:https://www.cockatiel-net.com/blog/unity/unity_compression_format/ | ||
+ | |||
+ | ===おすすめ=== | ||
+ | *起動直後のBGM:Streamingで、Vorbisにして、Qualityを50で、Load In Backgroundをオフ | ||
+ | *起動直後でないBGM:Streamingで、Vorbisにして、Qualityを50で、Load In Backgroundをオン | ||
+ | *頻度高めのSE:Compressed in Memoryで、ADPCMにして、Qualityを50 | ||
+ | *頻度低めのSE:Compressed in Loadで、Vorbisにして、Qualityを50 | ||
+ | |||
+ | 参考:https://kingmo.jp/kumonos/unity-audio-clip-recommend-setting/ | ||
+ | |||
+ | ==Project側の初期ファイル== | ||
+ | ===Editor=== | ||
+ | Texture2D | ||
+ | <pre> | ||
+ | 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 ←TextMeshProのものっぽい。 | ||
+ | </pre> | ||
+ | Shader | ||
+ | <pre> | ||
+ | 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 | ||
+ | </pre> | ||
+ | |||
+ | ===実機=== | ||
+ | Texture2D | ||
+ | <pre> | ||
+ | UnityNHxRoughness 64.6KB | ||
+ | Soft 21.8KB | ||
+ | UnityHalo 8.6KB | ||
+ | UnityAttenuation 4.6KB | ||
+ | UnityGrayscaleRamp 4.6KB | ||
+ | UnityWatermark-dev 4.3KB | ||
+ | UnityDefault2D 2.6KB | ||
+ | </pre> | ||
+ | |||
+ | Shader | ||
+ | <pre> | ||
+ | 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 | ||
+ | </pre> |
2023年11月28日 (火) 13:04時点における最新版
目次
メモリ対策
- プロジェクトを、一旦閉じて開く
- 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になるが、画質はすごく落ちる
Audio
LoadType
- Compressed in Load: メモリの容量はそのまま
- Compressed in Memory: メモリの容量を圧縮 (ただしvorbisで、品質が高いとCPU負荷が高くなる)
- Streaming: 読み込みながらなので、メモリもそこまで使わないが、in Memoryと同じぐらい、CPUは高い。
ComporessionFromat
- PCM: SEに向いてるが、サイズが大きすぎるので、使わず、vorbisを使ったほうが良いかも。
- Vorbis: BGMに向いてる
- ADPCM: SEでノイズのあるものに向いてる
参考:https://www.cockatiel-net.com/blog/unity/unity_audio_load_3/
参考:https://amagamina.jp/blog/audio-clip/
参考:https://www.cockatiel-net.com/blog/unity/unity_compression_format/
おすすめ
- 起動直後のBGM:Streamingで、Vorbisにして、Qualityを50で、Load In Backgroundをオフ
- 起動直後でないBGM:Streamingで、Vorbisにして、Qualityを50で、Load In Backgroundをオン
- 頻度高めのSE:Compressed in Memoryで、ADPCMにして、Qualityを50
- 頻度低めのSE:Compressed in Loadで、Vorbisにして、Qualityを50
参考:https://kingmo.jp/kumonos/unity-audio-clip-recommend-setting/
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 ←TextMeshProのものっぽい。
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
実機
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