コガネブログ

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

【Unity】簡単にデバッグメニューを実装できる「SRDebugger」紹介($30)

概要

 
2015/2/7 に「SRDebugger」がリリースされました
「SRDebugger」を導入すると簡単にデバッグメニューを実装できるようになります

目次

検証環境

  • Unity 2018.2.18f1
  • SRDebugger 1.8.2

タブ

System タブ

f:id:baba_s:20181205154559p:plain

ゲームを起動しているデバイスの情報や使用している Unity の情報などが確認できます

Console タブ

f:id:baba_s:20181205144627p:plain

デバッグログを確認できます

Options タブ

f:id:baba_s:20181205144640p:plain

変数やプロパティを変更できる項目を追加したり、
関数を呼び出すボタンを追加したりできます

Profiler タブ

f:id:baba_s:20181205144632p:plain

FPS やメモリの使用状況を確認できます
「GC Collect」ボタンを押して GC.Collect() を実行したり
「Clean」ボタンを押して Resources.UnloadUnusedAssets() を実行したりできます

開き方

f:id:baba_s:20181205144434p:plain

デフォルトでは画面左上を3回クリックすることでデバッグメニューを表示できます

ショートカットキー

キー 内容
Ctrl + Shift + F1 System タブを開く
Ctrl + Shift + F2 Console タブを開く
Ctrl + Shift + F3 Options タブを開く
Ctrl + Shift + F4 Profiler タブを開く
Esc デバッグメニューを閉じる

※ショートカットキーの割り当ては設定ウィンドウから変更できます

設定ウィンドウ

f:id:baba_s:20181205145508p:plain

「Window>SRDebugger>Settings Window」を選択すると設定ウィンドウが表示されます

General

f:id:baba_s:20181205145552p:plain

大項目 小項目 内容
Loading Disable SRDebugger.Init() を呼び出すまで
デバッグメニューが読み込まれない
Automatic ゲーム開始時に
デバッグメニューが自動で読み込まれる
Panel Access Trigger Mode デバッグメニューにアクセスできる条件
(常に、モバイルのみ、無効、Development Build のみ)
Trigger Behaviour デバッグメニューを開く方法
(3回タップ、長押し、2回タップ)
Default Tab デバッグメニューを開いた時に最初に表示されるタブ
Require Entry Code デバッグメニューを開く時にパスワード認証を求める

Layout

f:id:baba_s:20181205145603p:plain

デバッグメニューのタブをピンした時に配置される位置

Shortcuts

f:id:baba_s:20181205145613p:plain

キーボードショートカットを有効化するかどうか、
有効化する場合にどのキーを押すとどのタブが表示されるか

Advanced

f:id:baba_s:20181205145621p:plain

大項目 小項目 内容
Console Collapse Log Entries 重複するログをまとめる
Rich Text in Console リッチテキストをサポート
Max Console Entries 保存するログの最大数
Display Transparent Background デバッグメニューの背景を透過
Layer デバッグメニューの表示レイヤー
Use Debug Camera デバッグメニューを専用のカメラで描画
UI Scale スケーリング値
Enabled Tabs 有効なタブ

Options タブのカスタマイズ

カスタマイズの基本

public partial class SROptions
{
    private float m_value = 0.5f;

    public float Value
    {
        get { return m_value; }
        set { m_value = value; }
    }
}

例えば、新規でスクリプトを作成して上記のコードを貼り付けた状態で
ゲームを実行してデバッグメニューの Options タブを開いてみると

f:id:baba_s:20181205151507p:plain

Value プロパティを編集できる項目が追加されていることが確認できます

このように、partial クラスの SROptions を定義して
その中に public なプロパティを定義することで、
それを編集できる項目が自動で Options タブに登録されます

読み取り専用

public partial class SROptions
{
    private float m_value = 0.5f;

    public float Value { get { return m_value; } }
}

f:id:baba_s:20181205151847p:plain

プロパティに set アクセサを定義しなかった場合、読み取り専用になります

関数を実行できるボタン

using UnityEngine;

public partial class SROptions
{
    public void Log()
    {
        Debug.Log( "ピカチュウ" );
    }
}

f:id:baba_s:20181205152009p:plain

戻り値が void の public な関数を定義すると、その関数を実行できるボタンを配置できます

値を範囲内に制限

public partial class SROptions
{
    private float m_value;

    [NumberRange( -5, 5 )]
    public float Value
    {
        get { return m_value; }
        set { m_value = value; }
    }
}

f:id:baba_s:20181205152434g:plain

NumberRange 属性を適用すると値を範囲内に制限できるようになります

値の変化値を変更

public partial class SROptions
{
    private float m_value;

    [Increment( 5 )]
    public float Value
    {
        get { return m_value; }
        set { m_value = value; }
    }
}

f:id:baba_s:20181205152711g:plain

Increment 属性を適用すると値の変化値を変更できるようになります

表示名を設定

using UnityEngine;

public partial class SROptions
{
    [DisplayName( "ピカチュウ" )]
    public void Log()
    {
        Debug.Log( "ピカチュウ" );
    }
}

f:id:baba_s:20181205152843p:plain

DisplayName 属性を適用すると項目の表示名を変更できます

表示順の変更

public partial class SROptions
{
    [Sort( 3 )] public void Log1() { }
    [Sort( 2 )] public void Log2() { }
    [Sort( 1 )] public void Log3() { }
}

f:id:baba_s:20181205153052p:plain

Sort 属性を適用すると数値が低いほど最初に表示されるようになります

カテゴリ分け

using System.ComponentModel;

public partial class SROptions
{
    [Category( "カテゴリ A" )] public void A1() { }
    [Category( "カテゴリ A" )] public void A2() { }

    [Category( "カテゴリ B" )] public void B1() { }
    [Category( "カテゴリ B" )] public void B2() { }

    [Category( "カテゴリ C" )] public void C1() { }
    [Category( "カテゴリ C" )] public void C2() { }
}

f:id:baba_s:20181205153310p:plain

Category 属性を適用すると指定した文字列でカテゴリ分けできます

ピン

f:id:baba_s:20181205153911p:plain

各タブに表示されているピンボタンを押すことで

f:id:baba_s:20181205153938p:plain

よく使うタブや Options の項目をゲーム画面に常に表示しておくことができます

まとめ

以上が SRDebugger の基本的な使い方、カスタマイズの方法になります
デバッグメニューを作りたいけど工数を削減したい、という方は
ぜひ使ってみていただければと思います