
Microsoft Visual Studio 2022でコードをデバッグする方法
Unityは、JetBrains Rider、Atom、Microsoft Visual Studioコード、Visual Studioなど、さまざまなコードエディタをサポートしています。Visual Studio は、Unity エディターとともにデフォルトでインストールされるビルトインパッケージです。
この記事では、2022 年版の Microsoft Visual Studio デバッガーを使用するためのヒントを紹介します。このデバッガーを使用すると、コードのバグを効率的に修正できます。Visual Studioでの一般的な生産性向上のヒントについて詳しく知りたい方は、ブログ記事「10 ways to speed up your workflow in the Visual Studio」をご覧ください。

Visual Studio 2022 デバッグツールのインストール
Visual Studio 2022はUnityをビルトインサポートしており、IDEを離れることなく、スクリプトの記述と編集、Unity固有の機能へのアクセス、ゲームコードのデバッグを簡単に行うことができます。IntelliSense のコード補完、構文の強調表示、コードスニペットなどの機能を提供し、より迅速かつ効率的にコードを記述するのにヘルプます。さらに、ブレークポイントの設定、コードのステップ実行、変数の検査、ランタイム時の式の評価などのデバッグツールを利用できます。
Visual Studio には、無料コミュニティ版を含む複数のバージョンがあります。
この記事は、2022 年版の Visual Studio に基づいています。2019 バージョンも機能は同じですが、スクリーンショットが少し異なります。デフォルトで、Unityの新規インストールでは、Visual Studioのコミュニティ バージョンと、Visual StudioとUnityを統合するGame Development with Unityという拡張子がインストールされます。Visual Studio のインストールを選択しない場合は、こちらからコピーを入手できます。Visual StudioをUnityと連携させる設定の詳細については、こちらを参照してください。
UnityエディターにVisual Studioをインストールしたら、Unity>Preferences>External Toolsを開き、外部スクリプト エディターとしてVisual Studioを選択します。

Unity への Visual Studio デバッガーの取り付け
エディターで実行中のプロジェクトのコードのリアルタイムデバッグを可能にするには、Visual Studio デバッガーをエディターにアタッチする必要があります。これにより、デバッガーがゲームのランタイム状態にアクセスして操作できるようになります。これをアタッチする手順を見ていきましょう。
デバッグする Unity プロジェクトを開きます。
Unity で、編集> 環境設定 (Windows) または Unity> 環境設定 (macOS) に移動し、Visual Studio が優先外部スクリプト エディタとして設定されていることを確認します。表示されていない場合は、ドロップダウンメニューから選択します。
Project ウィンドウでスクリプト ファイルをダブルクリックするか、Assets> Open C# Project メニュー オプションを使用して、Visual Studio で目的のスクリプトを開きます。
Visual Studioで、[Debug]>[Attach Unity Debugger]に移動するか、ツールバーの[Attach to Unity]ボタンをクリックします。ウィンドウが開き、使用可能なUnityインスタンスのリストが表示されます。
プロジェクトを実行しているUnityインスタンス(通常は「Unityエディター(プロジェクト名)」と表示されます)を選択し、[Attach]をクリックします。
Visual Studio が Unity に接続され、ブレークポイントの設定とコードのデバッグを開始できます。ゲームがエディターで実行されていると、次のセクションに示すように、Visual Studio デバッガーがブレークポイントで実行を一時停止し、ゲームの状態を確認してコードをデバッグできます。
初めてのデバッグセッションの場合は、現在のセッションまたはすべてのセッションのデバッグを有効にするオプションを示すウィンドウが表示されます。前者の「Enable debugging for this session」を選択することをお勧めします。

ブレークポイントの使用
ブレークポイントは、特定のコード行にあるマーカーです。デバッガーはブレークポイントを検出するとプログラムの実行を停止し、変数、オブジェクト、およびコールスタックの現在の状態を検査できます。その後、コードの 1 行 1 行をステップ実行し、プログラムの実行中に状態がどのように変化するかを確認できます。
Visual Studio でブレークポイントを設定するには、スクリプトを開き、コードエディタのコード行の横にある実行を一時停止するマージンをクリックします。または、行にカーソルを置き、F9 キーを押します。上の画像に示すように、ブレークポイントが設定されていることを示す赤い点が表示されます。
次に、Unityエディターに移動してゲームをプレイします。プログラムの実行がブレークポイントのある行に達すると、Visual Studio はブレークポイントのある行でプログラムの実行を一時停止したフォアグラウンドのアクティブアアプリケーションになります。この時点で、Visual Studio のツールを使用して変数を検査できます。
最も簡単なオプションは、オブジェクト、プロパティ、または単純変数の上にカーソルを置くことです。Visual Studio にオーバーレイレイパネル(上のコラージュの下の画像)が追加され、関数のオーバーロード、オブジェクトのプロパティ、プロパティや変数の値をビューできるようになります。
オーバーレイに右向きの矢印がある場合は、これをクリックするとパネルが拡張され、オブジェクトのプロパティの内部値に関する詳細な情報が表示されます。
実行中のプログラムで値を調べるこの機能は非常に便利です。
Visual StudioがUnityにアタッチされると、[デバッグ]>[Attach to Unity]の右側に新しいツールバーが追加されます。このツールバーの 4 つのボタンは、左から右に向かって次の操作を行います。
- 実行継続/一時停止:プログラムが再生中の場合は、一時一時停止アイコンがディスプレイされ、これをクリックすると実行を一時一時停止できます。プログラムを一時停止した状態で、 を押すとプログラムの実行が再開されることを示す右矢印アイコンが表示されます。
- ステップ オーバー:このボタンを押すと、強調表示されているコード行が実行され、次の行で再び一時停止します。
- ステップイン:アクティブなコード行にソースコードがプロジェクトの一部である関数が含まれている場合、開発者はこのボタンを使用して関数とそのコードをステップインおよびステップスルーできます。
- ステップアウト:これにより、プログラムの実行が現在の関数外に移動します。

条件付きブレークポイント
条件付きブレークポイントは、指定された条件が満たされた場合にのみ実行を一時停止する上級者向けのブレークポイントです。これは、特定のシナリオを調査する場合や、特定の条件下でのみ問題が発生する場合に便利です。
サイドバーまたは下部パネルのブレークポイントウィンドウでブレークポイントを右クリックすると、コンテキストメニューが表示されます。「ブレークポイントを編集」を選択します上の画像に示すダイアログボックスが表示されます。
その他のデバッグツール
Visual Studio のデバッガーウィンドウには、ブレークポイントでアプリケーションが一時停止している間、アプリケーションの状態を検査ヘルプWindowsがいくつかあります。プログラムの状態を調べるために不可欠な 3 つの Windows は、ローカル、ウォッチ、およびコールスタックです。次のセクションでは、それぞれについて説明します。

ローカル
「局所」ウィンドウに、実行コードの現在のスコープ内のローカル変数とその値が表示されます。これには、現在のメソッドまたはブロック内で宣言されている変数や、メソッドの引数も含まれます。「局所」ウィンドウでは、現在のブレークポイントの変数の値を簡単に調べることができます。これは、コードで問題を引き起こしている可能性のある、正しくない値や予期しない値を特定するのに役立ちます。行の先頭が右向きの矢印の場合は展開可能で、下向きの矢印の場合は展開されたウィンドウが縮小されます。

見る
「ウォッチポイント」ウィンドウでは、デバッグプロセス中に監視する特定の変数または式を追跡できます。現在のスコープ内の変数を表示する「局所」ウィンドウとは異なり、「ウォッチポイント」ウィンドウでは、スコープに関係なく、変数または式を手動で追加できます。これは、プログラムの実行全体を通して特定の変数の状態を追跡したり、アプリケーションの現在の状態に基づいて式を評価したりする場合に便利です。
スコープ内の変数またはオブジェクトの名前を入力すると、検査できるパネルが追加されます。Visual Studio でウォッチポイントを追加するには、コード内の変数または式を右クリックし、コンテキストメニューから「ウォッチポイントを追加」を選択するか、式を「ウォッチポイント」ウィンドウに直接入力します。

コールスタック
「コールスタック」ウィンドウには、現在のブレークポイントにつながるメソッド呼び出しのシーケンスが表示され、プログラムの実行パスを追跡できます。コールスタック内の各エントリーはメソッド呼び出しを表し、リストの先頭には最新の呼び出しが表示されます。コールスタックを調べることで、現在の実行ポイントにコードがどのように到達したかを判断し、問題や予期しない動作の根本原因を特定するのに役立ちます。
「コールスタック」ウィンドウでは、メソッド呼び出しのシーケンスが表示されるほか、スタックの各レベルを移動できます。リスト内のエントリーをダブルクリックすると、ソースファイル内の対応するコード行にジャンプし、そのメソッドのローカル変数およびパラメータをビューできます。これにより、特定のメソッドが呼び出されたコンテキストを理解し、アプリケーション内のデータを分析することが簡単になります。

ビルドのデバッグ
Visual Studio デバッガーは、Unity エディターで実行されるゲームだけでなく、ビルドにも役立ちます。ビルドにデバッガが使用するデータが含まれていることを確認する必要があります。これは、「ファイル」>「ビルド設定」から行い、表示されるウィンドウで「開発ビルドとスクリプトデバッグ」を選択します(上の画像を参照)。
Windows の場合はメインメニューから「デバッグ」>「Unity デバッガーを接続」、MacOS の場合はトップメニューから「デバッグ」>「プロセスに接続」を選択します。
Unity Player というインスタンスを選択します。これで、すべてのブレークポイント、ローカル、およびウォッチポイントが開発ビルドで使用可能になりました。

上級者向け Unity クリエイター向けのその他のリソース
別のコードエディタを使用する予定がありますか?Microsoft Visual Studioコードのヒントに関する記事をお読みください。
Unity では、プロの開発者がゲームコードを最適化するのにヘルプ立つ上級者向けなガイドを多数提供しています。C# スタイルガイドを作成する:業界エキスパートからのアドバイスをまとめた、よりクリーンなコードを作成し、チームがクリーンで読みやすく、拡張性の高いコードベースを開発するのに役立つコードスタイルガイドを作成します。
ユーザーに人気のあるもう1つのガイドは、「70+ tips to increase productivity with Unity」です。経験豊富な開発者でも見逃しているかもしれないヒントなど、Unity 2020 LTSで日常的な集計ワークフローを改善する時間節約のヒントが満載です。
Unity Best Practices Hubでは、Unityの上級者向けのeBookや記事をすべてご覧いただけます。