【小ネタ】Unity2018に向けてMonoDevelopからVisual Studio for Macに引越した

# はじめに

2018/01/05 Unity blogにて以下発表がありました。
> Discontinuing support for MonoDevelop-Unity starting in Unity 2018.1
> https://blogs.unity3d.com/jp/2018/01/05/discontinuing-support-for-monodevelop-unity-starting-in-unity-2018-1/


## 日本語訳(google翻訳+細かい箇所を修正)

Unity 2018.1以降、MonoDevelop-UnityをUnityにバンドルしなくなり、
MonoDevelop-Unityを使用するためのサポートはUnity 2018.1以降ではサポートされなくなります。

Unityの（現在の実験的な）.NET 4.6スクリプティングランタイムアップグレードにより、
C＃6.0以降で利用可能な新しいエキサイティングなC#機能を多数サポートしていきます。
新しいC＃機能に付随する素晴らしいC＃IDE体験を提供することはUnityにとって非常に重要です。

Unityに含まれるMonoDevelop-Unity 5.9.6は、最新のC＃機能をサポートしておらず、
Unityの新しい.NET 4.6スクリプトランタイムのC#スクリプトのデバッグとも互換性がありません。
これに対処するために2つの変更を行っています。

MacOSとWindows上のUnity 2018.1インストーラからMonoDevelop-Unity 5.9.6を削除し、
Unity 2018.1以降のUnityではサポートしなくなりました。
Unity 2018.1でmacOS上のC＃IDEとしてVisual Studio for Macのみを含みます。
Windowsでは、Visual Studio 2017 Communityを引き続き使用し、代替手段としてMonoDevelop-Unityを含まなくなります。
Visual Studio for MacにはすでにUnityとの統合が含まれており、
Unity 5.6.1以降、最新のC＃機能と.NET 4.6スクリプティングランタイムでのC＃スクリプトのデバッグをサポートしています。

MacOSのMonoDevelop-Unityユーザは、Mac用のVisual Studioをダウンロード／インストールして、今すぐ使用することができます。

C＃IDEの代替
Visual Studio for MacとVisual Studio 2017 Communityのほかに、現在いくつかのC＃IDEの代替製品が用意されています。

- Visual Studio Code (Windows, macOS, Linux)
- JetBrains Rider (Windows, macOS, Linux)

## 三行で
- Unity 2018.1以降、MonoDevelopはUnityにバンドルされずサポートしない
- winではVisual Studio 2017 Community、macではVisual Studio for Macがバンドル
- 理由は、最新のC#機能をサポートするため

# 引越した
そんなわけでUnity2017.2で
MonoDevelopからVisual Studio for Macに引越しました。
以下の手順で行いました。

- [公式サイト](https://www.visualstudio.com/ja/vs/visual-studio-mac/)からインストール
- Unityで Preference > External Tools > External Script Editor を変更する
- おわり

<img width="320" alt="スクリーンショット 2018-01-13 12.38.46.png" src="https://qiita-image-store.s3.amazonaws.com/0/19692/9af71fff-4ab6-1122-95a0-9622b3443088.png">

# Visual Studio引越初日に行ったこと

最低限の設定と確認。
Visual Studio for Mac Community v7.3.3で行いました。

## 1. 黒背景にする

ユーザ設定 > 視覚スタイル でテーマをDarkへ。

<img width="480" alt="スクリーンショット 2018-01-13 12.19.20.png" src="https://qiita-image-store.s3.amazonaws.com/0/19692/d0b07cee-5cb6-2afd-f788-26d33bf92ead.png">

## 2. スペース・タブを見えるようにする
 
ユーザ設定 > テキストエディター > マーカーとルーラー で非表示文字の設定。

<img width="480" alt="スクリーンショット 2018-01-13 12.19.01.png" src="https://qiita-image-store.s3.amazonaws.com/0/19692/75d0905f-34c9-50ed-3b88-d21cd236ec4b.png">

## 3.コードフォーマット作成

### 3.1. ポリシー作成

Visual Studio Community > ポリシー から作成。
主に以下をポリシー化しました。

- 改行コード
- タブ (ソフトタブ／ハードタブ)
- インデント・改行・スペースの規則

<img width="480" alt="スクリーンショット 2018-01-13 12.29.09.png" src="https://qiita-image-store.s3.amazonaws.com/0/19692/2eb06fb0-5d09-e304-9b38-22c8127a7dcc.png">

チーム開発であればポリシーをエクスポートしてチームに共有すれば同じポリシーが使用できます。

### 3.2. プロジェクトに適用

プロジェクト > ポリシーの適用 で適用。
プロジェクト > プロジェクトソリューション で詳細設定が可能でした。

<img width="480" alt="スクリーンショット 2018-01-13 12.22.09.png" src="https://qiita-image-store.s3.amazonaws.com/0/19692/c2c2a37d-db9b-fe27-57d5-aae30187c7af.png">

＃ ユーザ設定 > ソースコードに同じ項目の設定がありますが、
＃ プロジェクト設定が優先されるためこちらの設定は現在のプロジェクトには反映されない

## 4. デバッグ実行の確認
VisualStudio内で「F5」もしくは「Commandキーを押しながらEnter」でデバッグ実行状態になります。
この状態だと行表示の左をクリックするだけでブレークポイントが挿入可能に。

<img width="480" alt="スクリーンショット 2018-01-13 18.08.31.png" src="https://qiita-image-store.s3.amazonaws.com/0/19692/ed4ba03e-6ce0-11b5-45b6-25bd4d9069d6.png">

UnityEditor側でゲーム実行し、ブレークポイント行を通ると一時停止することを確認しました。
Visual Studio側ではスレッドや呼び出し履歴などで実行状態を確認できました。

<img width="480" alt="スクリーンショット 2018-01-13 18.12.23.png" src="https://qiita-image-store.s3.amazonaws.com/0/19692/7a6eed02-5a8c-82e1-29de-bd105370eb0e.png">

動作しない場合は 実行 > プロセスにアタッチ でアタッチ先を確認すると良さげ。

## 補足
なんでUnity側の設定なしにここまでちゃんと使えるのか疑問でしたが、
Visual Studio for Mac Tools for Unityなるものがデフォルトに含まれているとのこと。
https://docs.microsoft.com/ja-jp/visualstudio/mac/setup-vsmac-tools-unity

↓機能拡張一覧を見ると確かにデフォルトで入っていました
<img width="480" alt="スクリーンショット 2018-01-13 19.05.24.png" src="https://qiita-image-store.s3.amazonaws.com/0/19692/1af9a9b0-30b0-ce70-78b8-a5d03180f1cd.png">


## 感想
操作感がほぼ同じで、より多機能になったのでスムーズに移行できました。
はじめてUnityを使用したときは、MonoDevelopが日本語に対応しておらず困った思い出があります。
先人の功績に感謝..!