[unity]サッとパラメータを確認したい

コンソールログで毎フレーム変化する情報を書き出すと、あっという間にスクロールして追いきれない。
そんな時はよく TextMeshProUGUI などを置いて、SetText() で毎フレーム画面に書き出すんじゃないでしょうか。

この方法が簡単ですが、似たようなことを毎回しているとこんな風に問題を感じるようになります。

毎回 TextMeshProUGUI(とフォント)置くのも面倒…

確認したら消すんじゃなく、ちょくちょく必要な時に表示したい…

(ついでに)コンソールログも実機で確認したい

ようは楽で汎用的なデバッグログをゲーム画面に表示したいと思ったので、ササッと作成してみました。

Github

画面と説明

Display が毎フレーム表示するためのフレームです。

int cnt = 0;

void Update()
{
    DDisp.Log($"count: {cnt++}");
}

Update に DDisp.Log を入れておくと、このように毎フレーム1ずつカウントアップしながら表示します。

Console を選択すると、Unity Editor のコンソールログを表示します。

Off にするとログ表示を消します。

グループを増やす

場合によっては Display をタイプごとに分けたいかもしれません。
プレイヤー情報は Player、敵情報は Enemy のように、任意にタイプを追加可能です。

void Start()
{
    DDisp.AddGroup("Player");
    DDisp.AddGroup("Enemy");
}

void Update()
{
    DDisp.Log($"  Hp: 100", "Player");
    DDisp.Log($" 攻撃力:  80", "Player");

    for (int i = 0; i < 100; i++)
    {
        DDisp.Log($"Enemy{i+1, 3} Hp: {100 * i, 5}", "Enemy");
    }
}

1画面で情報が収まらない場合

Enemy は 100 行登録したため全部表示しきれていません。
こんな時、画面左下の鍵マークをクリックすると、背景が薄青くなり、表示エリアをスワイプ(ドラッグスクロール)する事ができます。

この時表示されるテキストボックスにワードを入力すると、入力したワードによってビューにフィルタがかかります。

注意点

実はこっそりマウスで選択できたり、↑↓キーを押す事で行を選択することができます。
(デバッグディスプレイに必要かどうかは微妙ですが、選択した行の値を直接変えたい場合には使えるかなー的な)

この判定には InputSystem(New) & Padd を使用していますが、入力にはまだ Input(Old) を使っている方もいるかもしれません。
その場合は DDisp.cs の1行目をコメントにしてください。

//#define PADD_ENABLE

サンプルコード

DDispTest クラスをご覧ください。
その他、呼び出せるメソッドは基本的に DDisp_Single に全て含まれます。

返信を残す

メールアドレスが公開されることはありません。

CAPTCHA