VS Codeを使ったUnity開発


## はじめに

以前は[Xamarin](http://www.monodevelop.com/)でC#を書いてましたが、[他の言語やプラットフォーム](https://code.visualstudio.com/Docs/languages/overview)で使用するエディタを変えたくなかったのと、Unityに[Plug-in](https://github.com/dotBunny/VSCode/)を追加することによってブレークポイントを利用可能ということでVSCodeに乗り換えました。
あと、MacでVisual Studioを使いたかったというミーハーな気持ちもあります。

## 環境
- OSX 10.9.5
- Unity 5.3.6
- Visual Studio Code 1.4.0

## [VS Code Plug-in](https://github.com/dotBunny/VSCode/)をUnityプロジェクトに追加

Assets/Plugins/Editor/[VSCode.cs](https://github.com/dotBunny/VSCode/archive/master.zip)へ追加する。

## Unity側でVSCodeを設定する

- *Unity > Preferences > VSCode > Enable Integration* をチェックする
- *Unity > Preferences > VSCode > Use Unity Debugger* をチェックする
- Install Unity Debuggerを押下してVSCodeにインストール

## VSCodeでUnityプロジェクトを開く

***Assets > Open C# Project in Code***を実行してVSCodeを使用する。
この手順を踏まないと、VSCodeからの静的コード解析やDebuggerが利用できません。

## Unityの設定

***Unity Preferences***から**VSCode**を選択して**Enable Integration**をチェックして選択する。

## DEBUGの環境設定

画面左端に表示されているボタンの中で一番下（Debug）をクリックしてDebugモードにする。
歯車マークをクリックすると***launch.json***が開く。
***launch.json***を生成後にDebugモードで再生マークのStartをクリックするとDebug開始となります。
この状態でUnityを再生するとブレークポイントで処理を停止してくれます。
変数の監視も可能です。
メンバ変数の監視は、変数に`this.`を含めないといけないので注意してください。
WATCHリスト含めてからでも、`this.`を含めることが出来るのでソースを書き換えなくても大丈夫です。

## Debugger for Unity

1. ***⌘ + p***の後に、 `ext install unity-debug`と入力
1. 虫マークをクリックしてデバッグウィンドウを表示
1. `.vscode/Launch.json`があれば、あらかじめ削除しておく
1. 歯車マークをクリックして、`Unity Debugger`を選択
1. ***Launch.json*** が生成される

## Unity固有のコールバックも補完

***snippets.js***を[ダウンロード](https://github.com/anchan828/unity-snippets/archive/master.zip) して、`Visual Studio Code.app/Contents/Resources/app/plugins/vs.language.csharp.o/features/snippets.js`とする。

> [unity-snippets](https://github.com/anchan828/unity-snippets)

## インテリセンスの遅延

Unity側で再生をしていると、VSCode側でコード解析が重くなりコードアシストが実用に耐えません。
停止してからコードを書きましょう。

## setting.json

***Code>Preferences>User Settings***から***setting.json***を開く。

### フォントの変更

コーディングに適したオープンソースフォントMonoidを選択。
***setting.json***に追記。

```json
{
    "editor.fontFamily": "Monoid"
}
```

> [Monoid](https://larsenwork.com/monoid/)

### ハードタブを使わない

タブの代わりにスペースを用います。
***setting.json***に追記。

```json
{
    "editor.insertSpaces": true
}
```

### タブ・スペースを可視化

***setting.json***に追記。

```json
{
    "editor.renderWhitespace": true
}
```

## keybindings.json

***Code>Preferences>Keyboard Shortcuts***から***keybindings.json***を開く。

### コードリフォーマットのショートカット指定

***keybindings.json***に記述。直前までXamarinを使っていたので、そっちにあわせた。

```json
{
    "key": "cmd+alt+l",
    "command": "editor.action.format"
}
```

### 宣言箇所へ移動のショートカット指定

***keybindings.json***に記述。
直前までXamarinを使っていたので、そっちにあわせた。

```json
{
    "key": "cmd+d",
    "command": "editor.action.goToDeclaration",
    "when": "editorTextFocus"
}
```

### Markdownのプレビュー切り替えショートカット指定

***keybindings.json***に記述。

```json
{
    "key": "ctrl+v",
    "command": "workbench.action.markdown.togglePreview"
}
```

## .gitignoreに追加

チーム開発を行なっていて、VSCodeを使っているのは僕ひとりなので、コミットしないようにする。

```gitignore
{プロジェクト名}/Assets/Plugins/Editor/VSCode.cs
{プロジェクト名}/Assets/Plugins/Editor/VSCode.meta
{プロジェクト名}/.vscode
```

## 拡張ツール（Extension）

### ClassyNaming

コード補完を更に柔軟に行う。
入力した文字列のパターンから予測できるコードを補完するようになる。

1. ***⌘+p***
1. `ext install Classy Naming`を実行

> [reflectiondm.ClassyNaming](https://marketplace.visualstudio.com/items/reflectiondm.ClassyNaming)

### wakatime

プロジェクトのファイル単位で作業した時間を自動計測してくれる。
ただし、[wakatime](https://wakatime.com/)でアカウント登録が必要になる。
VSCodeに対応したプラグインがあり、GitHub上で公開されている。

1. ***⌘+p***
1. `ext install WakaTime`を実行

> [VSCode Plug-in Help](https://wakatime.com/help/plugins/vscode)


### markdownlint

Markdownの構文チェックツール。
linterで構文チェックを随時行なっていれば、逐一プレビューを見なくてもキレイなMarkdownが書けると考えました。

1. ***⌘+p***
- `ext install markdownlint`を実行

> [DavidAnson.vscode-markdownlint](https://marketplace.visualstudio.com/items/DavidAnson.vscode-markdownlint)

### MDTools

テキスト操作ツール

コードブロック内でアスキーアートを作ったり、キャメル記法やパスカル記法に文字列操作が出来る。

1. ***⌘+p***
1. `ext install mdtools`を実行
1. 操作対象の文字列を選択
1. `Alt + t`実行

> [seanmcbreen.MDTools](https://marketplace.visualstudio.com/items/seanmcbreen.MDTools)

### テーマカラー

基本的に**Monokai**を好むので、その派生テーマカラーをインストールした。

1. ***⌘+p***
1. `ext install Flatland Monokai Theme`を実行

> [vscodeThemes](https://marketplace.visualstudio.com/vscode/Themes)
> [Markdown Theme Kit](https://marketplace.visualstudio.com/items/ms-vscode.Theme-MarkdownKit)

### GitHistory

1. ***⌘+p***
1. `ext install githistory`を実行

> [Git History](https://marketplace.visualstudio.com/items?itemName=donjayamanne.githistory)

### Preview

1. ***⌘+p***
1. `ext install preview-vscode`

Markdownのプレビューを表示

> [Preview](https://marketplace.visualstudio.com/items?itemName=searKing.preview-vscode)

### Bookmarks

エディタ上にマークしたラインへジャンプする

1. ***⌘+p***
1. `ext install Bookmarks`

> [Bookmarks](https://marketplace.visualstudio.com/items?itemName=alefragnani.Bookmarks)

## 関連リンク

Googleで、`"visual studio code" VSCode "VS Code" 便利`で検索するといろいろ使い方がわかる。

- [visualstudio.com](https://code.visualstudio.com/)からVSCodeのインストーラーをダウンロード
- ["Unity"でVSCode公式サイトを検索](https://code.visualstudio.com/Search?q=unity)
- [MS公式ドキュメント：Unity Development with VS Code](https://code.visualstudio.com/Docs/runtimes/unity)
- [VS Code Plug-in](https://github.com/dotBunny/VSCode/)
- [Visual Studio Codeを使ってデバッグする](http://appleorbit.hatenablog.com/entry/2015/09/27/105151)
- [Introducing Visual Studio Code](http://www.johnpapa.net/visual-studio-code/)
- [Visual Studio Code 0.5.0の新機能まとめ](http://outofmem.hatenablog.com/entry/2015/07/20/154030)
- [VSCode関連リポジトリ](https://github.com/Microsoft?utf8=%E2%9C%93&query=vscode)
- [Qiita--Visual Studio Codeグループ](https://qiita.com/tags/visualstudiocode)
- [Qiita--UnityでVisual Studio Codeを使う](http://qiita.com/STAR_ZERO/items/6708b69d18eb8c815963#comment-521fbcf4c631035dfb68)
- [VSCodeアップデート情報](https://code.visualstudio.com/updates)
- [VS Code Extension Gallery](https://code.visualstudio.com/docs/editor/extension-gallery)
- [VS Code MarketPlace](https://marketplace.visualstudio.com/#VSCode)
- [VS Code Unity Debugger Extension Preview](http://forum.unity3d.com/threads/vs-code-unity-debugger-extension-preview.369775/)
- [Unity-Technologies/vscode-unity-debug](https://github.com/Unity-Technologies/vscode-unity-debug)
- [Debugger for Unity](https://marketplace.visualstudio.com/items?itemName=Unity.unity-debug)
- [Python on Visual Studio Code](https://code.visualstudio.com/docs/languages/python?utm_expid=101350005-19.kIX9xbW6SzulLMT7tyJnsg.0&utm_referrer=https%3A%2F%2Fwww.google.co.jp%2F)
- [キーバインド](https://code.visualstudio.com/docs/customization/keybindings)