Mac + Unity + Visual Studio Code でデバッガを動かすまで

# はじめに
久しぶりに Unity を触ってみようと思い立ったは良いものの、デバッグ実行の仕方も分からなくなっていた（以前は MonoDevelop を使っていました）ので、改めて調べながら動くところまで漕ぎ着けたので情報を整理して残します。

また、大まかな流れは以下だけです。

<b>1. Unity 側で Visual Studio Code との紐付けをする</b>
<b>2. Visual Studio Code でデバッガ用の拡張機能を入れ、プロジェクトを読み込み、実行状態にする</b>

# 動作環境
* macOS Catalina (10.15.5)
* Unity (2019.2.12f1)
* Visual Studio Code (1.49.1)
    * C# for Visual Studio Code (1.23.2)
    * Unity Debugger Extension for Visual Studio Code (2.7.5)
    * .NET Core 3.1 SDK

# 前提条件
* Unity のインストールが終わっていること
* Visual Studio Code のインストールが終わっていること
* 適当な Unity のプロジェクトがあること
<br>私は Unity NavMesh : Basics のサンプルプロジェクトを使いました。
<br>https://learn.unity.com/tutorial/unity-navmesh

# Unity 側の設定
* [Unity] -> [Preferences...] -> [External Tools] -> [External Script Editor] のプルダウンメニューから <b>Visual Studio Code</b> を選択する。
![unity_preference.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/568896/c369c836-03cd-9ccd-6854-d4bbd3761ee8.png)


# Visual Studio Code 側の設定
* 左側にある Extensions タブ（四角いブロックみたいなアイコン）を選択し、<b>`C# for Visual Studio Code`</b> と <b>`Unity Debugger Extension for Visual Studio Code`</b> を検索し、インストールする。（※図はインストール済みの状態。また、私の環境では .NET 系の警告が出ていたため、指示に従って <b>.NET Core 3.1 SDK Core 3.1 SDK</b> も合わせてインストールしています）
![extention_tab.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/568896/b8afd82e-1fad-ab5f-417c-b3dd2294ffee.png)

* 左側にある Run タブ（虫＆再生ボタンみたいなアイコン）を選択し、<b>Open a file~</b> の部分をクリックして、Unity のプロジェクトを読み込ませる。
![add_project_before.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/568896/f359a46a-75bb-b501-ec9a-ff190b07e9df.png)
先の Unity NavMesh のサンプルプロジェクトを読み込むとこんな感じになりました。
![add_project_after.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/568896/7d677036-d1a9-9f1d-5a3e-6128fdd83a43.png)

* 引き続き Run タブから、<b>create a launch.json file.</b> の部分をクリックして、<b>Unity Debugger</b> を選び <b>launch.json</b> を作成する。
![add_launch_json_before.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/568896/c23bb7d8-21ed-44a5-287c-66d4b5afe1a5.png)
作成に成功すると、Run タブの UI が変化し、デバッグ実行可能な状態となるので、図にある「▷マーク」をクリックして実行します。（※Unity アプリが立ち上がる訳ではないので、Unit 側は別途立ち上げ・実行する必要があります）
![add_launch_json_after.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/568896/70faf629-4583-b6f8-8719-11704ac1e44d.png)
デバッグ実行中はエディタ上によくあるステップ実行等のボタンが表示され、<br>左から「実行/一時停止」「ステップオーバー」「ステップイン」「ステップアウト」「再起動」「停止」
![debugging_04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/568896/c1395d65-7aed-cabe-5ff8-6f43091d83db.png)

# 実行例
以上でデバッガを動作させるまでの手順は完了です。
ここからは、実際にブレークポイントを貼って動かした際の例となりますので、不要な方はここで読み終えて頂ければと思います。

* 以下は Unity NavMesh のサンプル実行画面（画面をクリックするとレイを飛ばして、筒状のキャラクターがその位置まで移動すると言うものです）
![unity_demo.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/568896/5cf8abd0-caae-f52e-b020-08c955f1667f.png)
画面をクリックした時に通過する場所に貼ったブレークポイントでしっかり止まってくれました。
![debugging_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/568896/cdee1ead-9cc2-6960-f2ed-55046816631d.png)
変数の中身もちゃんと覗けているようです。
![debugging_02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/568896/9af6f0e8-e05b-f6b2-5456-baabd9ecf734.png)
という事で、最低限動作するところまでは確認できました。

# おわりに
Visual Studio Code には Unity 用の便利な拡張機能があるようなので、少しずつ試してみたいと思います。
拡張機能の検索欄に unity と打ち込むだけでも相当数出てくるので、どれが良いものなのか判断に困るのですが..。

# 参考文献
[UnityでVisual Studio Codeを使用できるようにするまでの手順](https://qiita.com/riekure/items/c45868f37a187f8e1d69)
[Unity での C# コードのデバッグ（リファレンス）](https://docs.unity3d.com/ja/2018.4/Manual/ManagedCodeDebugging.html)
https://code.visualstudio.com/docs/editor/debugging#_global-launch-configuration