facebook twitter hatena line email

「Unity/負荷軽減/Memory」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
(確認)
(おすすめ)
 
(同じ利用者による、間の22版が非表示)
行36: 行36:
 
+    },
 
+    },
 
</pre>
 
</pre>
 +
 +
==メモリ使用しているオブジェクト名の確認==
 +
#MemoryProfiler/Captureボタンを押す
 +
 +
Captureファイルは、プロジェクト直下の、MemoryCapturesの直下に、置かれる。
  
 
==UnityObjecsの項目==
 
==UnityObjecsの項目==
 
公式:https://docs.unity3d.com/Packages/com.unity.memoryprofiler@1.1/manual/unity-objects-tab.html
 
公式:https://docs.unity3d.com/Packages/com.unity.memoryprofiler@1.1/manual/unity-objects-tab.html
 
Description Displays the name of each individual object or group of objects. Can't be disabled.
 
Allocated Size Displays how much memory the object or group of objects allocated, in bytes.
 
Resident Size Displays how much memory the object or group of objects is resident, in bytes.
 
% Impact Displays how much memory the object or group of objects uses as a percentage of the Allocated Memory In Table value. All measurement bars, including the Allocated Memory In Table bar, adjust dynamically based on the selected object in the table.
 
Native Size Displays how much of the Allocated Size value is made up of native memory.
 
Managed Size Displays how much of the Allocated Size value is made up of managed memory.
 
Graphics Size Displays how much of the Allocated Size value is made up of graphics memory.
 
  
 
<pre>
 
<pre>
行85: 行82:
 
*NormalQualityにしたとき、メモリ消費は、2.5Mに
 
*NormalQualityにしたとき、メモリ消費は、2.5Mに
 
*HighQualityにしたとき、メモリ消費は、5.0Mに
 
*HighQualityにしたとき、メモリ消費は、5.0Mに
 +
 +
===外部ツールで圧縮した場合===
 +
メモリ消費は、変わらない。
  
 
===MaxSizeについて===
 
===MaxSizeについて===
行92: 行92:
 
*1024のとき、メモリ消費は、0.6Mになるが、画質は落ちる
 
*1024のとき、メモリ消費は、0.6Mになるが、画質は落ちる
 
*512のとき、メモリ消費は、160.5Kになるが、画質はすごく落ちる
 
*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時点における最新版

メモリ対策

  1. プロジェクトを、一旦閉じて開く
  2. Unityメインメニュー/Windows/Analysis/Profiler/Memory/TotalCommitedMemoryを確認

閉じて、開かないと、メモリが蓄積するので、一度、プロジェクトは閉じる。

MemoryProfilerPackageインストール

  1. 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"
+    },

メモリ使用しているオブジェクト名の確認

  1. 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