LoginSignup
9
3

More than 3 years have passed since last update.

clusterで作ったワールドのメモリ使用量の内訳を雑に見るやり方

Last updated at Posted at 2020-12-16

この記事はクラスター Advent Calendar 2020の17日目です。
前回はYOSHIOKA_Ko57さんによる「UnityでプラットフォームごとにUIの判定エリアを変える」でした。
プラットフォームごとのUI作りはむずい!

はじめに

こんにちは、ふたつきです。
クラスター株式会社でUnityエンジニアとして、入室後に使う機能やUIの実装を主に行なっています。
最近は公式が出しているイベントやワールドの負荷検証などもやっていて、そこで「なんかすごくメモリ食ってない?」ってなった時にとりあえずやっていることをまとめてみました。

とりあえずメモリを見る

今回はハロクラディレクターからお借りしたハロクラ会場のメモリ使用量を見ていきます。

まず最初に開発者モードでメモリ使用量を見てみます。
※開発者モードは、歯車アイコンの設定メニューからオンにすることができます。

指標として先にCluster Creator Kit Sampleに入っているMinimalSampleを見てみます。(何もないとこれくらいという指標になります)
image.png

お借りしたハロクラ会場を見てみます。
image.png

差を見ると会場で300MBくらいメモリ使ってそうですね。
メモリ使用量が1000MB以下なら大体の端末で動くはずなので無理をする必要はないですが、今回はもっと減らせれるか見ていきます。

メモリの内訳を見てみる

自分は普段Unityから配布されているMemoryProfilerを使っているのでMemoryProfilerで見ていきます。

MemoryProfilerを入れる

そもそもMemoryProfilerが入ってないよ!ということでMemoryProfilerをインストールする手順を書いていきます。

見たいワールドのUnityプロジェクトを開きWindow->PackageManagerを開きます。
image.png

Advanced内にあるShow preview packages にチェックを入れます。(MemoryProfilerはまだpreview版なのでこれをやらないと出てこない)
image.png

memoryあたりで検索すると左の一覧に出てくるので選択して右下のInstallボタンを押します
image.png

Window->Analysis->MemoryProfilerが開ければOK!
image.png

MemoryProfilerでキャプチャを取ってみる

作った会場をUnity上で実行し、開いているMemoryProfilerのCapturePlayerを押します(途中で出てくるダイアログはTakeSnapShotを押す)
image.png

キャプチャしたファイルが左の一覧に溜まっていくので今取った最新のものをOpen!
image.png

MemoryProfilerでキャプチャを見る

キャプチャを開くと下のようなカラフルな画面が出てきます。これが現在Unity上で使っているメモリの内訳になります。(UnityEditorのUI画像も含まれていて実機での状況とちょっと違うので注意!)
image.png

とりあえず一番大きいTexture2Dをクリックしてみます。
image.png

するとそのカテゴリの内訳が見れます。
image.png

各要素でメモリ削減をする

こういう感じで各内訳を見ていってすごくでかい物を削減できないか検討してきます。

テクスチャを減らす

先程見た内訳に42MBも使っているテクスチャがあったのでそれが削減できないか検討してみます。
image.png
ProjectWindowでファイル名を検索すると4Kのテクスチャが出てきたのでこれを強い気持ちでサイズ縮小していきます。
image.png
テクスチャはサイズを小さくするくらいしか簡単に削減できなさそうなのでクオリティとのトレードオフでやっていきましょう。

AudioClipを減らす

AudioClipの内訳を見たときbellが6.5MBあるのが気になったのでこいつも減らせないか検討してみます。
image.png

AudioClipは何も設定しないと無圧縮のオーディオデータがメモリに載るので用途によってLoadType設定を変え、メモリに載る量を最適なものにしていきます。
image.png
Decompress On Load:無圧縮の音データ、容量が短いSEなどで使うと良さそう
Compressed In Memory:圧縮された音データ、再生時に非圧縮にするので長めのSEなどで使うと良さそう
Streaming:再生している箇所の前後のみがメモリに載る、BGMや歌などで使うと良さそう

bellは長めのSEだったのでCompressed In Memoryにしておきました。

最終結果

以上のことをするとメモリが…
image.png
18MB減りました…思ったより減りが少ない…
2つのテクスチャを小さくして1つのAudioClipの設定を変えただけなので、改善する場所はまだまだありそうです。
こんなかんじでメモリの使用量を減らす道は地道なものになりがちですが、みんなも頑張って減らしていきましょう。

明日はcompile3の「KAKUYO」です。
NANIWKAKUNDESHOUNE,TANOSHIMIDESU

9
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
3