【Unity】Debug.Logをカスタマイズするとコードジャンプが困る件について

AvatarPosted by

グリフォン Advent Calendar 2018 13日目の記事を担当しました、Unityエンジニアのちょこぷよです

この記事ではDebug.Logをカスタマイズしたときの問題とその解決方法の紹介をします

※この記事はGRIPHONE Advent Calendar 2018 13日目の記事です。
https://qiita.com/advent-calendar/2018/griphone
https://adventar.org/calendars/3147

Debug.Log、カスタマイズしたくなるときありますよね

クラス名出したり、行数出したり、色を分けたりとか…

例えば色を変えるなら以下で出来ますね!
DebugCustom.cs

public static class Debug
{
  public static void Log(object message)
  {
    UnityEngine.Debug.Log("<color=red>" + message + "</color>");
  }
}

呼び出しはこんなかんじで。
DebugTest.cs

public class DebugTest : MonoBehaviour
{
  void Start()
  {
    Debug.Log("testtest");
  }
}

↑出ました!

そしてコンソール上をダブルクリックすると…

呼び出しがDebugTestクラスなら、DebugTestクラスの5行目に飛んでほしいのですが、残念ながら先程作ったstaticのDebugクラスに飛んでしまうのです

これは困った

DLLを作ろう

そこで登場するのがDLLです

DLLにするとコードが開けなくなるので、コンソールダブルクリックで1つ前の呼び出しまでジャンプできます

DLLを作るには、以下のようなbatchファイルを作ります
build.bat

smcs.batのファイルパス -r:"UnityEngine.dllのファイルパス" -r:"UnityEditor.dllのファイルパス" -target:library -out:任意の名前.dll *.cs

ちなみに自分の環境だと以下のような感じになりました

"C:\Program Files\Unity\Editor\Data\Mono\bin\smcs.bat" -r:"C:\Program Files\Unity\Editor\Data\Managed\UnityEngine.dll" -r:"C:\Program Files\Unity\Editor\Data\Managed\UnityEditor.dll" -target:library -out:../CustomDebug.dll *.cs

フォルダ構成は

DebugCustomフォルダ
├ build.bat
└ DebugCustom.cs

にして、batchをダブルクリックをすることでDLLを作ることが出来ます

DLLはプロジェクト内に置いておけば使えます

あとはLogを出して、コンソールをダブルクリックをすることで、行きたいところにジャンプできることが確認できます

お疲れ様でした