Debugについて

ゲームを開発した後、公開するまでに必要な作業がデバッグです。

デバッグというのは、ゲームやアプリケーションの不具合を見つけ修正する作業です。

そうした不具合をバグと呼びます。

ゲームの場合、

  • 進行不能になる
  • 想定外の挙動になる
  • ハングアップ(停止)する

などがバグにあたります。

Unityにはデバッグを支援するクラスがあるのでそちらを解説します。

Log出力

よく使うと思いますが、Consoleにログを出力できます。

Log

一番使うであろうメソッドです。

Debug.Log("ログを表示");

LogWarning

警告としてログを表示したい場合に使用します。

アイコンが警告のものに変わります。

Debug.LogWarning("警告を表示");

LogError

エラーとしてログを表示したい場合に使用します。

アイコンがエラーのものに変わります。

実行時エラーの表示にも使用されます。

Debug.LogError("エラーを表示");

Assert

Assertは引数の条件が失敗した(falseになった)場合に、エラーメッセージを表示します。

以下の場合、_gameObjectnullだった場合エラーメッセージが表示されます。

Debug.Assert(_gameObject != null);

引数で、表示するメッセージを指定することも出来ます。

Debug.Assert(_gameObject != null, "_gameObjectがnullです!");

Draw系

SceneView上に線を描画することが出来ます。

向いている方向や目的地まで線を繋いでみたり、ゲーム内の状況を若干確認しやすくなります。

DrawLine

視点と終点を指定してその間に線を引きます。

色も指定できます。

Debug.DrawLine(transform.position, _target.transform.position, Color.red);

(0, 0, 0)から_target(1, 1, 0)まで線を引いてみました。

複数組み合わせれば、地面上に矩形を作ったり、立方体で範囲を表現したりも出来ます。

DrawRay

視点と方向を指定して線を描画することが出来ます。 Physics.Raycast 系メソッドでRayを飛ばしている方向を確認したい時に役に立つかもしれません。

var vector = _target.transform.position - transform.position;
Debug.DrawRay(transform.position, vector, Color.cyan);

その他

他にもいくつか機能があります。

Break

呼ばれたタイミングで、UnityEditorがポーズ状態になります。

一旦止めてインスペクタでGameObjectの状態などを確認したい場合に使えそうです。

Debug.Break();

まとめ

今回はDebugについて説明しました。

UnityEditor上で、想定通りメソッドが呼ばれているか、変数がどういう状態なのか、

といった状態を調べるための最低限の機能ですが折角用意されているのでうまく使っていきましょう。