LoginSignup
3
1

More than 5 years have passed since last update.

SRDebuggerでOptionContainersを使って表示カテゴリを制御する

Last updated at Posted at 2018-03-05

UnityでSRDebuggerを使ってデバッグをする際に、特定のシーンやタイミングでのみ使いたいオプションなどがあったり、オプションの表示順をいろいろあれこれしたい時にOptionContainersを利用したら割とお手軽に調整できたのでメモ

OptionContainers

OprionContainersはC#のObject単位でオプションのプロパティやメソッド群を管理するものです

以下は公式のページより引用したものですキャプチャ.PNG
SRDebugger公式サイト

今回は以下のようにベースクラスを作りました

/// <summary>
/// 各カテゴリーのオプション群のベースクラス
/// </summary>
public class OptionsBase<T> where T : class, new()
{
    private static T _current;
    public static T Current => _current ?? (_current = new T());

    /// <summary>
    /// 全オプションに必要そうなオブジェクト
    /// </summary>
    protected DataObject _dataObject;
    protected DataObject DataObject
    {
        get
        {
            if (_dataObject == null)
            {
                //初期処理
            }

            return _dataObject;
        }
    }
}

後はベースに従ってカテゴリ単位で表示するオプション群を指定します(別にカテゴリ単位でなくてもよい)

/// <summary>
/// 特定のカテゴリのデバッグオプション
/// </summary>
public class TestOptions : OptionsBase<TestOptions>
{
    /// <summary>
    /// カテゴリー名
    /// </summary>
    private const string CATEGORY_TEST = "カテゴリ名";

    /// <summary>
    /// PlayerPrefsきれいにしたり
    /// </summary>
    [Category(CATEGORY_TEST)]
    [SROptions.DisplayName("PlayerPrefs削除")]
    [SROptions.SortAttribute(0)]
    public void DeletePlayerPrefs
    {
        PlayerPrefs.DeleteAll();
    }
}

そしてこれらを任意のタイミングでオプションパネルに追加したり削除したりします

 private void Start()
 {
     // 開始時にオプションを表示
     SRDebug.Instance?.AddOptionContainer(TestOptions.Current);
 }

 private void OnDestroy()
 {
     // シーン破棄時にオプションを非表示
     SRDebug.Instance?.RemoveOptionContainer(TestOptions.Current);
 }

本来カテゴリ単位でのソートはSRDebuggerに用意されてない(されてたら指摘してください)のですが、追加の順序などを制御することで任意の場所に置くことができます
これに従って裏でAttributeを拡張すれば表示順を結構自由にいじれそうですし、一度作ってみると楽かもしれません

3
1
1

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
3
1