Unity でゲームを開発していて、(右図のような)エラーが発生したことはありませんか?エラーを解決するのはなかなか難しい作業ですよね。
そんな悩みも、デバッグの使い方をマスターすれば解決しますよ。
デバッグを使えばプログラムを好きなところで止めたり、変数の中身をみることができます。
目次
STEP1:エラー箇所を確認する
エラーの情報は、Unity の「コンソール」ウィンドウで確認できます。エラーをクリックすると、下記のように詳細が表示されます。エラーの箇所は「CameraController.cs」ファイルの 29 行目となっています。この記事では、試しにこのエラーを解決していきたいと思います。
UnassignedReferenceException: The variable followingSlowTarget of CameraController has not been assigned.
You probably need to assign the followingSlowTarget variable of the CameraController script in the inspector.
CameraController.FixedUpdate () (at Assets/Scripts/CameraController.cs:29)
STEP2:該当のコードにブレークポイントを置き、「Unity にアタッチ」する
該当のコード(今回の例では、「CameraController.cs」ファイルの 29 行目)にブレークポイントを置きます。コードの左側にマウスカーソルをもっていくと白い丸が表示されると思います。そこでクリックをすると赤い丸に変わります。それがブレークポイントです。ブレークポイントを置いた位置でプログラムを止めることができます。
ブレークポイントを置いたら、ツールバーにある「Unity にアタッチ」をクリックします。これで準備は OK です。
STEP3:ゲームを再生する
Unity の再生ボタンを押してゲームを始めます。
STEP4:ブレークポイントでエラーの内容を確認する
ブレークポイントの位置(「CameraController.cs」ファイルの 29 行目)でプログラムが止まります。下記の手順で、変数の中身を確認できます。
①:Visual Studio の左下に変数が表示されます。「this」の横にある三角のマークをクリックします。
②:変数「followingSlowTarget」が null になっていることが確認できます。変数に値が割り当てられていないようです。
STEP5:デバッグ時の便利なコマンド
上図のデバッグ時の操作は、下表のようなショートカットと対応しています。これらの操作を使って、より詳しくエラー内容を調べることができます。
デバッグの中止 | Shift + F5 |
再起動 | Ctrl + Shift + F5 |
次のステートメントの表示 | Alt + Num* |
ステップイン | F11 |
ステップオーバー | F10 |
ステップアウト | Shift + F11 |
STEP6:エラーの解決
デバッグの結果、今回のエラーは変数「followingSlowTarget」に値が割り当てられていないことが原因でした。ゲームオブジェクトをアタッチしたり、プログラム側で null チェックをするなどの対応が考えられます。
デバッグをマスターすればエラーも怖くありません。プログラムの開発では、ぜひデバッグを使うようにしましょう。