Developer

【初心者Unity】Unity環境下でのVisual Studioデバッグ方法
2022.02.28
Lv1

【初心者Unity】Unity環境下でのVisual Studioデバッグ方法

1.はじめに

皆さん、Unityでのスクリプトのデバッグはどのように行っていますか?
Debug.Logで色々と出力値を試してみたり、あるいはゲーム再生中にInspectorで値を弄ってみたり、といったところでしょうか?
それらの方法も素晴らしく、大抵の問題を解決できるとは思いますが、実はVisual Studioのデバッグ機能を利用することもできます。

本記事で使い方を覚えていただいて、導入を比較検討していただければと思います!

2.エディタの確認

早速デバッグ機能の説明に入る前に、外部エディタの設定を確認しましょう。
Edit > Preferences > External Tools > External Script Editor
で「Visual Studio」が選択されていることを確認してください。

プルダウンの選択肢に「Visual Studio」が見つからない場合は、こちらの記事を参照してください。

【初心者Unity】Visual Studioのインストール方法

3.デバッグの開始

それでは早速デバッグを開始します。
ゲーム再生時に実行されるスクリプトを用意してください(任意のスクリプトをアクティブなGameObjectにアタッチしてください)。
スクリプトの内容は何でも良いですが、例として以下のスクリプトを使用します。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Script : MonoBehaviour
{
    void Start()
    {
        int num1 = 100;
        int num2 = num1;
        int num3 = method(num1);

    }

    int method(int num)
    {
        num = num * 2;
        return num;
    }

}

任意の行にブレークポイントを設定します。
ブレークポイントはコードエディター左端(下図赤枠)をクリックすることで設定できます。
デバッグ実行時、ブレークポイントに設定した行が実行される直前でプログラムが停止するようになります。

次にツールバーの再生ボタンのプルダウンを、「Unityにアタッチ」に設定します。

以上で準備は完了です。
「Unityにアタッチ」をクリックしてください(ショートカットはF5です)。
画面が以下のように切り替わると思います。

この状態でUnityエディターに戻り、ゲームを再生します。
以下のダイアログが出てきた場合は、「Enable debugging for this session」を選択します。

PCのスペックによってはとても重くなりますが、しばらく待つとVisual Studioにウィンドウが切り替わります。
その際、ブレークポイントに設定した行に黄色い帯が掛かっていれば、開始成功です。
黄色い帯は、今からこの行を実行します、という意味です。
変数にカーソルを当ててみると、中に入っている値が確認できます。

4.デバッグの終了

続いて、デバッグの終了方法について説明します。
デバッグ中はUnityエディターがHold on状態になるため、ゲームを終了することはできません。
そのため、Visual Studio側でデバッグを終了させる必要があります。

方法は簡単です。
ツールバーの停止ボタンを押してください。

すると、デバッグ開始前の画面に戻るかと思います。
この状態で、ゲームを終了すれば完了です。

5.ステップ実行

ブレークポイントで停止した後、プログラムを一行ずつ実行していくことができます。
これをステップ実行といいます。
ステップ実行にはいくつか種類がありますが、ここでは代表的な3つを紹介します。

ステップイン
ステップインは、プログラムを一行実行するデバッグ方法です。
実行する行でメソッドを使用している場合は、メソッド内に遷移します。
以下のアイコンかショートカットF11で実行できます。

以下は実行例です。

ステップオーバー
ステップオーバーは、プログラムを一行実行するデバッグ方法です。
ステップインとは異なり、実行する行でメソッドを使用している場合にメソッド内に遷移しません。
以下のアイコンかショートカットF10で実行できます。

以下は実行例です。

ステップアウト
ステップアウトは、メソッド内の残りの処理を実行し、呼び出し元に戻るデバッグ方法です。
以下のアイコンかショートカットShift+F11で実行できます。

以下は実行例です。

6.その他の機能

ウォッチウィンドウ
デバッグ > ウィンドウ > ウォッチ で表示します。
変数や式の監視をすることができます。

ローカルウィンドウ
デバッグ > ウィンドウ > ローカル で表示します。
デバッグ中のメソッドのローカル変数を監視することができます。

イミディエイトウィンドウ
デバッグ > ウィンドウ > イミディエイト で表示します。
変数の値の確認やメソッドの実行等ができます。

 

連載目次リンク

「初心者のための」Unityゲーム制作 目次
 

Unity実践編 - 目次リンク

実践Unityゲームプログラミング 連載目次