【Unity】パフォーマンス情報をグラフィカルに可視化できるOSS『Graphy』紹介

Unity でパフォーマンスに関する情報をグラフィカルに可視化できるOSSである『Graphy』の使い方を簡単にまとめます。

Unity 2020.3.35f1
Graphy 3.0.2

はじめに

Graphy を使うと FPS や使用メモリ量といったパフォーマンスに関連する情報を簡単にかつグラフィカルに可視化することができます。

MIT ライセンスで公開されている OSS なので、ライセンスの範囲内で誰でも自由に使用することができます。
インストール方法は以下のリポジトリに書かれていますので、こちらを参照してください。

github.com

アセットストアからもインストールすることもできます。

assetstore.unity.com

本記事ではこのツールの使い方についてまとめます。

基本的な使い方

使い方は簡単で、[Graphy] という名前の Prefab をシーンに配置するだけです。

Graphy

再生すると以下のようにFPSやメモリ、デバイス情報が表示されていることを確認できます。

情報表示

知っておくべき設定項目

前節でシーンに配置した GameObject にアタッチされている Graphy Manager から Graphy に関する様々な設定を行うことができます。

まず上部では各モジュールに共通の設定を行うことができます。
主な設定項目の説明は下図に記載します。

主な設定項目

共通設定の下部には各モジュールごとの設定があります。
たとえば FPS モジュールの主な設定項目は下図の通りです。

FPSモジュールの設定項目

Graphy Debugger機能

また、[Graphy] GameObject にはもう一つ Graphy Debugger というコンポーネントがアタッチされていることがわかります。
これは、FPS やメモリなどの各値が設定した値になった時に、任意の処理を実行できるコンポーネントです。

例えば FPS が30を下回った時に警告を出力するには、下図のように設定します。

Graphy Debugger

上図の通り、UnityEvent を登録することもできるため、任意の処理を実行することができます。

スクリプティング

上記の設定項目はスクリプトから変更することも可能です。
Graphy Manager と Graphy Debugger はそれぞれ GraphyManager.InstanceGraphyDebugger.Instance のようにシングルトンで取得できます。

以下は各モジュールのステートをスクリプトから変更する例です。

using Tayx.Graphy;
using UnityEngine;

public classExample: MonoBehaviour
{
    private GraphyManager _manager;

    private voidStart()
    {
        //シングルトンで取得
        _manager = GraphyManager.Instance;
    }

    private voidUpdate()
    {
        //モジュールステートを適当に変更
        if (Input.GetKeyDown(KeyCode.B))
            SetModuleStates(GraphyManager.ModuleState.BACKGROUND);

        if (Input.GetKeyDown(KeyCode.F))
            SetModuleStates(GraphyManager.ModuleState.FULL);
    }

    private void SetModuleStates(GraphyManager.ModuleState state)
    {
        _manager.FpsModuleState = state;
        _manager.RamModuleState = state;
        _manager.AudioModuleState = state;
        _manager.AdvancedModuleState = state;
    }
}

参考

github.com