Debugについて
ゲームを開発した後、公開するまでに必要な作業がデバッグです。
デバッグというのは、ゲームやアプリケーションの不具合を見つけ修正する作業です。
そうした不具合をバグと呼びます。
ゲームの場合、
- 進行不能になる
- 想定外の挙動になる
- ハングアップ(停止)する
などがバグにあたります。
Unity
にはデバッグを支援するクラスがあるのでそちらを解説します。
Log出力
よく使うと思いますが、Console
にログを出力できます。
Log
一番使うであろうメソッドです。
Debug.Log("ログを表示");
LogWarning
警告としてログを表示したい場合に使用します。
アイコンが警告のものに変わります。
Debug.LogWarning("警告を表示");
LogError
エラーとしてログを表示したい場合に使用します。
アイコンがエラーのものに変わります。
実行時エラーの表示にも使用されます。
Debug.LogError("エラーを表示");
Assert
Assert
は引数の条件が失敗した(false
になった)場合に、エラーメッセージを表示します。
以下の場合、_gameObject
がnull
だった場合エラーメッセージが表示されます。
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
上で、想定通りメソッドが呼ばれているか、変数がどういう状態なのか、
といった状態を調べるための最低限の機能ですが折角用意されているのでうまく使っていきましょう。