コガネブログ

平日更新を目標に Unity や C#、Visual Studio などのゲーム開発アレコレを書いていきます

【Unity】パラメータやデバッグログを時系列グラフで閲覧できる「Monitor Components」($16.20)

概要

2014/10/27 に、エディタ拡張用のアセット「Monitor Components」がリリースされました

「Monitor Components」を導入すると、下記の項目のパラメータが
時系列グラフで閲覧できるようになります

  • MonoBehaviour
  • Transform
  • Rigidbody
  • Rigidbody2D
  • AudioSource
  • Debug.Log

パラメータが常に可視化されるため、
予期せぬ値が設定されていないかどうかの調査の役に立ちます

検証環境

  • Unity 5.6.2f1
  • Monitor Components 1.0.4

Monitors ウィンドウについて

f:id:baba_s:20170829143112p:plain

Unity メニューの「Window>Monitors」を選択すると Monitors ウィンドウが表示されます
この Monitors ウィンドウでオブジェクトのパラメータやデバッグログを時系列グラフで閲覧できます
サンプリングされたグラフは再生中、もしくは一時停止中のみ表示されます

f:id:baba_s:20170829143406p:plain

プルダウンメニューからオブジェクトを選択することで
サンプリング対象のオブジェクトを絞り込むことができます

f:id:baba_s:20170829143413p:plain

グラフの見た目を線形補間するかどうかを変更できます

f:id:baba_s:20170829143420p:plain

スライダーを操作してサンプリングする時間を変更できます(0.1 ~ 20 秒)

監視用コンポーネント

Monitors ウィンドウにパラメータやデバッグログを表示したい場合は
下記のコンポーネントを各ゲームオブジェクトにアタッチします

コンポーネント 内容
MonitorComponent 任意のコンポーネントの public 変数や
SerializeField 属性が適用された private 変数を監視します
MonitorTransform Transform の下記のパラメータを監視します
・position
・rotation
・scale
MonitorRigidbody Rigidbody の下記のパラメータを監視します
・position
・rotation
・velocity
・angular velocity
MonitorRigidbody2D Rigidbody2D の下記のパラメータを監視します
・position
・rotation
・velocity
・angular velocity
MonitorAudioSource Audio Source の下記のパラメータを監視します
・volume
・pitch
・isPlaying
MonitorDebugLog Debug.Log のメッセージを監視します

MonitorComponent

using UnityEngine;

public class Example : MonoBehaviour
{
    public Vector3 m_position;

    [SerializeField] private Vector3 m_velocity;
}

例えば上記のような自作のコンポーネントのパラメータを監視したい場合は
MonitorComponent を使用します

f:id:baba_s:20170829145756g:plain

このように Inspector で対象のオブジェクトに MonitorComponent をアタッチして
監視したいパラメータを設定すると、Monitors ウィンドウに項目が追加されて
パラメータを監視できるようになります

f:id:baba_s:20170829145859p:plain

MonitorTransform

Transform のパラメータを監視したい場合は MonitorTransform をアタッチして
監視したいパラメータをチェックします

f:id:baba_s:20170829152001p:plain

f:id:baba_s:20170829153849p:plain

MonitorRigidbody

Rigidbody のパラメータを監視したい場合は MonitorRigidbody をアタッチして
監視したいパラメータをチェックします

f:id:baba_s:20170829152849p:plain

f:id:baba_s:20170829153900p:plain

MonitorRigidbody2D

Rigidbody2D のパラメータを監視したい場合は MonitorRigidbody2D をアタッチして
監視したいパラメータをチェックします

f:id:baba_s:20170829152858p:plain

f:id:baba_s:20170829153907p:plain

MonitorAudioSource

AudioSource のパラメータを監視したい場合は MonitorAudioSource をアタッチして
監視したいパラメータをチェックします

f:id:baba_s:20170829152904p:plain

f:id:baba_s:20170829153921p:plain

MonitorDebugLog

オブジェクトが出力するログを監視したい場合は MonitorDebugLog をアタッチします

f:id:baba_s:20170829153300p:plain

f:id:baba_s:20170829154224p:plain

「Filter prefix」に文字列を入力すると、その文字列から始まるログだけ監視できるようになります

その他

f:id:baba_s:20170829154419p:plain

各種コンポーネントで用意されている「Axis Mode」を変更すると
Monitors ウィンドウにおけるグラフの表示方法が変わります

項目 内容
Fixed 設定した最小値、最大値の範囲内でグラフが表示されます
Expansive
Adaptive
パラメータの値が大きくなっても綺麗にグラフが表示されます

Expansive と Adaptive の違いがわからなかったですが、概ね上記のような挙動となっています

まとめ

各種パラメータが時系列グラフによって可視化されるため
予期せぬ値がどのタイミングで設定されているか調査する時に役に立ちます

興味がある方は購入してみて頂ければと思います

関連記事