Unity は、JetBrains Rider、Atom、MicrosoftVisual Studio Code、Visual Studioなど、さまざまなコードエディターをサポートしています。Visual Studio は、Unity エディターとともにデフォルトでインストールされる組み込みパッケージです。
この記事では、コード内のバグを効率的に修正できる、Microsoft Visual Studio デバッガーの 2022 エディションの使用に関するヒントを紹介します。Visual Studio の一般的な生産性向上のヒントについて詳しく知りたい場合は、ブログ記事「Visual Studio でワークフローを高速化する 10 の方法」をご覧ください。
Visual Studio 2022 には Unity のサポートが組み込まれているため、IDE を離れることなく、スクリプトを簡単に作成および編集したり、Unity 固有の機能にアクセスしたり、ゲーム コードをデバッグしたりできます。IntelliSense コード補完、構文の強調表示、コード スニペットなどの機能が提供され、コードをより速く効率的に記述できるようになります。さらに、ブレークポイントの設定、コードのステップ実行、変数の検査、実行時の式の評価などのデバッグ ツールも利用できます。
Visual Studio には、 無料のコミュニティ バージョンを含むいくつかのバージョンがあります。
この記事は Visual Studio の 2022 エディションに基づいています。2019 バージョンには同じ機能がありますが、スクリーンショットが少し異なります。デフォルトでは、Unity を新規インストールすると、Visual Studio のコミュニティ バージョンと、Visual Studio と Unity を統合する Game Development with Unity という拡張機能がインストールされます。Visual Studio をインストールしない場合は、 ここからコピーを入手できます。Visual Studio を Unity で動作するように設定する方法の詳細については、 こちらをご覧ください。
Unity エディターに Visual Studio をインストールしたら、Unity > 環境設定 > 外部ツールを開き、外部スクリプト エディターとして Visual Studio を選択します。
エディターで実行中のプロジェクトのコードのリアルタイム デバッグを有効にするには、Visual Studio デバッガーをエディターにアタッチする必要があります。これにより、デバッガーはゲームの実行時状態にアクセスして操作できるようになります。添付する手順を見てみましょう:
デバッグする Unity プロジェクトを開きます。
Unity で、[編集] > [環境設定](Windows) または [Unity] > [環境設定](macOS) に移動し、Visual Studio が優先外部スクリプト エディターとして設定されていることを確認します。そうでない場合は、ドロップダウン メニューから選択します。
プロジェクト ビューでスクリプト ファイルをダブルクリックするか、 [アセット] > [C# プロジェクトを開く] メニュー オプションを使用して、Visual Studio で目的のスクリプトを開きます。
Visual Studio で、[デバッグ] > [Unity デバッガーのアタッチ] に移動するか、ツールバーの [Unity にアタッチ] ボタンをクリックします。利用可能な Unity インスタンスのリストを含むウィンドウが開きます。
プロジェクトを実行している Unity インスタンス (通常は「Unity Editor (プロジェクト名)」と表示されます) を選択し、[アタッチ] をクリックします。
Visual Studio が Unity に接続されたので、ブレークポイントの設定とコードのデバッグを開始できます。ゲームがエディターで実行されているとき、Visual Studio デバッガーはブレークポイントで実行を一時停止し、次のセクションに示すように、ゲームの状態を調べてコードをデバッグできるようにします。
これが最初のデバッグ セッションである場合は、現在のセッションまたはすべてのセッションでデバッグを有効にするオプションを示すウィンドウが表示されます。前者の「このセッションのデバッグを有効にする」を選択することをお勧めします。
ブレークポイントは、特定のコード行にあるマーカーです。デバッガーがブレークポイントに到達すると、プログラムの実行が停止し、変数、オブジェクト、および呼び出しスタックの現在の状態を検査できるようになります。次に、コードを 1 行ずつ実行し、プログラムの実行時に状態がどのように変化するかを観察できます。
Visual Studio でブレークポイントを設定するには、スクリプトを開き、実行を一時停止するコード行の横にあるコード エディターの左余白をクリックします。または、その行にカーソルを置いて F9 キーを押します。上の画像に示すように、ブレークポイントが設定されたことを示す赤い点が表示されます。
次に、Unity エディターに移動してゲームをプレイします。プログラムの実行がブレークポイントの行に到達すると、Visual Studio はフォアグラウンドのアクティブ アプリケーションになり、プログラムの実行はブレークポイントの行で一時停止されます。この時点で、Visual Studio ツールを使用して変数を検査できます。
最も簡単なオプションは、オブジェクト、プロパティ、または単純な変数の上にマウスを移動することです。Visual Studio ではオーバーレイ パネル (上のコラージュの下部の画像) が追加され、関数のオーバーロード、オブジェクトのプロパティ、プロパティまたは変数の値を表示できるようになります。
オーバーレイに右向きの矢印がある場合は、これをクリックするとパネルが展開され、オブジェクトのプロパティの内部値に関する詳細情報が表示されます。
実行中のプログラムの値を調べるこの機能は非常に便利です。
Visual Studio が Unity に接続されると、[デバッグ] > [Unity にアタッチ]の右側に新しいツールバーが追加されます。このツールバーの 4 つのボタンは、左から右に次の機能を実行します。
- 実行の継続/一時停止:プログラムが現在再生中の場合は、一時停止アイコンが表示され、それをクリックすると実行を一時停止できます。プログラムが一時停止すると、右矢印アイコンが表示され、これを押すとプログラムの実行が再開されることを示します。
- ステップオーバー:このボタンを押すと、強調表示されたコード行が実行され、次の行で再び一時停止します。
- ステップイン:アクティブなコード行に、ソース コードがプロジェクトの一部である関数が含まれている場合、開発者はこのボタンを使用して、関数とそのコードにステップインして実行できます。
- 踏みでる:これにより、プログラムの実行が現在の関数の外に移動します。
条件付きブレークポイントは、指定された条件が満たされた場合にのみ実行を一時停止する、ブレークポイントの高度な形式です。これは、特定のシナリオを調査したい場合や、特定の条件下でのみ問題が発生する場合に役立ちます。
サイドバーまたは下部パネルのブレークポイント ウィンドウでブレークポイントを右クリックすると、コンテキスト メニューが表示されます。ブレークポイントの編集を選択します。上の画像のようなダイアログボックスが表示されます。
その他のデバッグツール
Visual Studio のデバッガー ウィンドウには、ブレークポイントで一時停止しているときにアプリケーションの状態を検査するのに役立ついくつかのウィンドウが用意されています。プログラムの状態を調べるための重要な 3 つのウィンドウは、ローカル、ウォッチ、および呼び出しスタックです。次のセクションではそれぞれについて説明します。
ローカル ウィンドウには、実行中のコードの現在のスコープ内のローカル変数とその値が表示されます。これには、現在のメソッドまたはブロック内で宣言された変数と、メソッド引数が含まれます。[ローカル] ウィンドウを使用すると、現在のブレークポイントでの変数の値をすばやく検査できます。これは、コードで問題を引き起こしている可能性のある不正な値や予期しない値を特定するのに役立ちます。覚えておいてください。行が右向きの矢印で始まる場合は拡張可能であり、下向きの矢印で始まる場合は拡張されたウィンドウが縮小されます。
ウォッチ ウィンドウを使用すると、デバッグ プロセス中に監視する特定の変数または式を追跡できます。現在のスコープ内の変数を表示する [ローカル] ウィンドウとは異なり、[ウォッチ] ウィンドウでは、スコープに関係なく、変数または式を手動で追加できます。これは、プログラムの実行中に特定の変数の状態を追跡したり、アプリケーションの現在の状態に基づいて式を評価したりするのに役立ちます。
スコープ内の変数またはオブジェクトの名前を入力すると、それを検査できるパネルが追加されます。Visual Studio でウォッチを追加するには、コード内の変数または式を右クリックし、コンテキスト メニューから [ウォッチの追加] を選択するか、ウォッチ ウィンドウに式を直接入力します。
呼び出しスタック ウィンドウには、現在のブレークポイントにつながったメソッド呼び出しのシーケンスが表示され、プログラムの実行パスをトレースできます。呼び出しスタック内の各エントリはメソッド呼び出しを表し、最新の呼び出しがリストの先頭に表示されます。コールスタックを検査することで、コードが現在の実行ポイントにどのように到達したかを判断し、問題や予期しない動作の根本原因を特定するのに役立ちます。
呼び出しスタック ウィンドウでは、メソッド呼び出しのシーケンスを表示するだけでなく、スタックのさまざまなレベルを移動することもできます。リスト内のエントリをダブルクリックすると、ソース ファイル内の対応するコード行にジャンプし、そのメソッドのローカル変数とパラメーターを表示できます。これにより、特定のメソッドが呼び出されたコンテキストを理解しやすくなり、アプリケーションを介したデータの流れを分析しやすくなります。
Visual Studio デバッガーは、Unity エディターで実行されるゲームだけでなく、ビルドにも役立ちます。ビルドにデバッガーが使用するデータが含まれていることを確認する必要があります。これは 、ファイル > ビルド設定から実行し、表示されるウィンドウで 開発ビルド と スクリプトデバッグ を選択します (上の画像を参照)。
Windows の場合はメイン メニューから [デバッグ] > [Unity デバッガーをアタッチ] を 選択し、MacOS の場合はトップ メニューから [デバッグ] > [プロセスにアタッチ] を 選択します。
Unity Player というインスタンスを選択します。これで、すべてのブレークポイント、ローカル、ウォッチが開発ビルドで利用できるようになります。
別のコードエディタを使用する予定ですか?Microsoft Visual Studio Codeのヒントに関する記事をお読みください。
Unity は、プロの開発者がゲームコードを最適化できるようにするための高度なガイドを多数提供しています。C# スタイル ガイドを作成します。スケーラブルなクリーンなコードを書く チームがクリーンで読みやすく、スケーラブルなコードベースを開発できるように、コード スタイル ガイドを作成する方法について業界の専門家からのアドバイスをまとめています。
ユーザーの間で人気のあるもう 1 つのガイドは 、「Unity で生産性を高める 70 以上のヒント」です。経験豊富な開発者でも見逃していたかもしれないヒントも含め、Unity 2020 LTS を使用した日常の集約ワークフローを改善するための時間節約のヒントが満載です。
Unity の高度な電子書籍と記事はすべて 、Unity ベストプラクティス ハブで見つかります。