Search Unity

プログラムからスナップショットの取得を行える「UnityMemoryProfilerSupportKun」の解説

はじめに

(本記事で紹介するツールは、ユニティ・テクノロジーズ・ジャパンの社員が個人的に開発・利用していたもので、この度Unityユーザーの皆さんにも自由にご利用いただけるよう無償公開したものです。ツールの使用許諾などはリポジトリのREADME、LICENSEテキストをお読みください。原則として公式サポートはございません)

UnityMemoryProfilerSupportKunはUnity公式ツールのMemoryProfilerで使えるスナップショットファイル(計測時点のメモリの情報を保存したファイル)の取得をプログラムから行えるツールです。プログラム内で実行できる為、希望するタイミングでピンポイントにスナップショットを取得できます。

スナップショットファイルはMemoryProfilerで読み込んで詳細情報を確認する事ができます。

インストール

UnityエディタのメニューからWindow-> PackageManagerと選択し、Package Managerウィンドウを開きます。

ウィンドウの左上にある+のアイコンをクリックし、「Add package from git URL...」を選択します。

入力欄にhttps://github.com/katsumasa/UnityMemoryProfilerSupportKun.gitと入力し、「Add」ボタンを押すとインストールが行われます。

使用時の作業の流れ

  1. プログラム内の希望する場所でスナップショットファイル(.snapファイル)を取得する処理を記述する。
  2. アプリ上で実行し、スナップショットファイルを取得する。
  3. Unityエディタ上のツールを使い、アプリ内に保存されているスナップショットファイルをUnityエディタへ転送する。
  4. MemoryProfileを使ってスナップショットファイルをロードし、データを確認する。

実際に使ってみる

まず、アプリ上でスナップショットファイルを作成する部分まで解説します。

デフォルトシーンだと画面が寂しいのでシーン上に3Dオブジェクトをいくつか追加します。

シーン上にGame ObjectTestという名前で作成し、そこにUnityMemoryProfilerSupportKunをインストールしたフォルダ内にある UnityMemoryProfilerSupportKunClient.cs を追加します。

Test.csファイルを作成し、以下の内容を記述します。ここではStartイベントのタイミングでアプリ内にスナップショットファイルの取得を行っています。このTest.csTestへ追加します。

using UnityEngine;
using Utj.UnityMemoryProfilerSupportKun;

public class Test : MonoBehaviour
{
    void Start()
    {
        // Capture001というファイル名で保存
        UnityMemoryProfilerSupportKunClient.instance.TakeSnapshot("Capture001");
    }
}

ここまでの作業を行うとTestは以下の様になっています。

これでStartイベントのタイミングでスナップショットファイルが取得される処理が実装できました。

次にスナップショットファイルの取得とそのファイルをエディタへ転送する作業を行います。

まず、アプリをビルドします。Build SettingsではDevelopment BuildAutoConnect Profilerにチェックを付けておいて下さい。なお、WindowsやMacアプリとしてビルドする場合にはフルスクリーンではなく、ウィンドウモードで起動するアプリとしてビルドしておくと、この後の操作がし易いのでオススメです。

ビルドしたアプリを実行した後、実行した状態のままUnityのエディタのメニューからWindow > UTJ > UnityMemoryProfilerSupportKunWindow > Openと選択します。するとこの様なウィンドウが表示されます。

右上に有る「Get Snap List」のボタンを押すとこの様な画面になります。

次に「Download」ボタンを押します。すると画面キャプチャの画像ファイルと.snapファイルがダウンロードされます。.snapファイルのダウンロード時にはファイル保存のダイアログが表示されます。このファイルは後で使いますので、保存した場所を覚えておいて下さい。

画面キャプチャ画像のダウンロードが終わった後の状態

スナップショットファイルの内容を確認

スナップショットファイルの内容を確認するにはMemoryProfilerを使用します。こちらのツールはデフォルトではインストールされていないので別途、インストールをします。

インストール

MemoryProfilerUnityMemoryProfilerSupportKunと同様の手順でインストールが可能です。

MemoryProfilerの場合には入力欄に入力する文字はcom.unity.memoryprofilerです。

スナップショットファイルを読み込む

インストールが終わったら、メニューからWindow > Analysis > Memory Profileと選択し、ウィンドウを表示します。

左上にあるこのアイコンをクリックし、表示されるダイアログで先程保存した.snapファイルを選択します。

ファイルを読み込むと左側のリストにスナップショットファイルの情報が表示されます。ここをクリックすると詳細が表示されます。

この画面で様々なメモリ情報を確認する事ができます。

おわりに

この様にプログラムの中で気になる瞬間でのスナップショットの取得をとても簡単に行う事ができる「UnityMemoryProfilerSupportKun」、よろしければ使ってみて下さい。

この記事はいかがでしたか?