Edited at

VisualStudioCodeでUnityプロジェクトをデバッグする

More than 3 years have passed since last update.

VisualStudioCodeはMonodevelopと比べても軽量でインテリセンスもさくさく効くのでUnityのエディタにしている人も多いと思います。

Unityでのデバッグができないのが困ると思っていたんですが、最近のUpdateでDebugできるようになったようです。

やり方試してみたのでまとめます。


環境

Mac OSX Yosemite 10.10.5

Unity 5.2.0f3

VisualStudioCode 0.9.1


参考

VisualStudioCode公式

plugin


導入

git clone https://github.com/dotBunny/VSCode.git

で適当な場所にDLしておきます。

正直コピーでもいいですが、今後の更新を取りやすくなるのでcloneしといたほうがいいのかな。

Plugins\Editor\dotBunnyをUnityプロジェクト内にコピー。

通常Assetsの下に入れるかと思います。参考サイトでもそういうふうに書いてますね。


Unity側設定

Unity>PreferencesにVSCodeというタブができている。

スクリーンショット 2015-10-18 15.54.25.png

Enable Integrationにチェック入れると他のも触れるようになります。

ひととおり全部チェック入れてしまって問題ないかと。

AlwaysWriteLaunchFileについては後ほど。

またメニューのAssetsの一番下にOpenC#ProjectInCodeという項目ができているので、クリックするとVisualStudioCodeが開きます。

また以前のようにCodeを開き直してProject選んで〜ってやらなくてもProjectが読み込まれた状態になります。


VisualStudioCode側設定

スクリーンショット 2015-10-18 16.01.29.png

タブの虫アイコン?を選択するとDebug画面にいきます。

ここで右上の設定アイコンをクリックしてください。

するとlaunch.jsonが開きます。こいつを以下の感じに修正(AlwaysWriteLaunchFileをOnにした場合は何もしなくても勝手にやってくれました)

{

"version":"0.1.0",
"configurations":[
{
"name":"Unity",// DropDownに表示される名前
"type":"mono",
"address":"localhost",
"port":56131 // AlwaysWriteLaunchFileをOnにしてたらここは適当で良さそう
}
]
}

ちなみにAlwaysWriteLaunchFileをOnにしとくと、UnityでPlayしたときに該当ポートで自動的にport部分が書き換わります適切にlaunch.jsonを書き換えてくれます。launch.jsonをまるごと書き換えてるのでデフォルトのものが消えるけど問題ないかと。

これでUnityをPlayしたあとにVSCode側でUnityを選んでDebugのPlayボタンクリックするとデバッガがアタッチされた状態になります。


機能

とりあえず適当にスクリプトつけてブレークポイントはってみました。


Variables

スクリーンショット 2015-10-18 16.15.36.png

中身は一通り見れそうですね。

やってみて気付きましたが、オブジェクトのnon public memberのとこにへんてこな型表示的なのが出ちゃってますが、内容は問題なさそうです。


Watch

スクリーンショット 2015-10-18 16.21.26.png

中身は普通に見れたりちょっと式いれたりできますが、VS2015みたいにウォッチWindowでLinqは使えないようですね。


注意

ブレークしてる最中はUnity側から止められないようです。デバッグ中にUnityが止まらないってなって焦ったら、VisualStudioCode側でブレークしてないか確認しましょう。


まとめ

PluginをUnityProjectに毎回入れたりlaunch.json変えたりしないとだめですが、各プロジェクト1回やればすむので、VisualStudioCodeつかってDebug.Log()うめて大変な思いしてた人はぜひためしてみてください!