Unityの開発 @ MacでVisual Studio Codeを利用したい時の備忘録

:::note warn
**注意喚起**
2023/6現在 VSCodeに対応している最新のUnityは2021.3.xです。Unity最新版の2022.3.xはVSCodeに対応しておらず、以下の様なエラーメッセージが表示されます。

<font color="RED">External Code Editor application path does not exist (/Applications/Visual Studio Code.app)! Please select a different application</font>

* 参考
https://docs.unity3d.com/Manual/com.unity.ide.vscode.html

:::

# 概要
Unityの書籍で環境構築の方法を参照すると、UnityはC#ベースということもあり、十中八九Visual Studio[^vs]のインストールが求められます。しかし、筆者の個人的な意見としてVisual Studioは非常に鈍重でディスク領域を激しく消費[^consume]します。そこで、可能であるならば、Visual Studio Code(以下、VSCode)を利用出来ないかと考えました。VSCodeはVisual Studioと名前は似ていますが、似て非なる物で、動作は軽快でカスタマイズ性も高く気に入っています。調べてみると情報が出て来る出て来る出て来る。。。しかし、情報が多すぎてどれを頼りにすれば良いのか困ってしまいます。公式情報は英語版のみ発見しました。そこで、英語版の公式情報をベースに独自に備忘録をまとめておくことにしました。その結果が本記事です。

[^vs]: 書籍を書いている方々もVisual Studioは嫌だけど、最も手間が掛からないからVSCodeを避けているのか？エディターについてこだわりが無いだけなのか？真意は定かではありませんが、VSCodeがこれだけ良いと言われる昨今なので補足か付録で追加してくれると良いのになとは思います。

[^consume]: 不必要な開発環境を入れ過ぎているという可能性は否めませんが、C/C++の環境だけでもかなりのディスク領域の容量を消費します。

# Unityのインストール
Unityのインストール方法は以下のサイトに3つのステップに分けて記載されています。ここを参照してUnity Hub、Unityのインストールを実施して下さい。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469079/3c9b689c-a868-d2d9-691f-0f87c35633d0.png)


https://unity.com/ja/download

# VSCodeのインストール
VSCodeは以下のサイトからインストーラーをダウンロードし、インストールします。

![VSCode.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469079/dfab55df-dced-7985-78c0-d10102f6c28c.png)

https://code.visualstudio.com/download

:::note alert
**2023/6/16修正** .NET SDK及びMonoのインストール方法としてHomebrewを採用していましたが、VSCodeにおける.NET及びMonoのPATHのデフォルト値とHomebrewでインストールした場合のPATHが異なるため、設定変更に手間を要することが分かりました。よってインストーラーをダウンロードする方法を採用します。PATH設定を変更しない場合、<font color="RED">"Some projects have trouble loading. Please review the output for more details"</font>が発生します。
:::

# .NET SDKのインストール
.NET SDKをインストールします。以下のサイトからインスーラーをダウンロードするとインストール出来ます。

https://dotnet.microsoft.com/ja-jp/download

以下を参照するとアップデートは盛んに行われていることが窺い知れます。本当はLTS版をインストールしたかったのですが、タイミング的にバージョン7を今回はインストールします。

https://dotnet.microsoft.com/ja-jp/platform/support/policy/dotnet-core

# Monoのインストール
Monoの最新バージョンをインストールします。これはVSCodeのバグ？を回避する目的であり、インストールしない場合、<font color="RED">"Some projects have trouble loading. Please review the output for more details"</font>というエラーメッセージが表示されます。インストーラーを以下のサイトからダウンロードしてインストールします。

https://www.mono-project.com/download/stable/

:warning: ここでインストールしたMonoはUnityのインストール時にインストールされたMonoとは干渉しないとのことです。

# VSCode C#拡張機能のインストール
VSCodeのC#拡張機能をインストールします。

```bash
code --install-extension ms-dotnettools.csharp --force
```

![C#Extension.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469079/5b4a853f-c5d3-ff6e-3087-d5583ea1f526.png)

https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.csharp

```bash:C#拡張機能のインストール
$ code --install-extension ms-dotnettools.csharp --force
Installing extensions...
Installing extension 'ms-dotnettools.csharp'...
(node:6286) [DEP0005] DeprecationWarning: Buffer() is deprecated due to security and usability issues. Please use the Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() methods instead.
(Use `Electron --trace-deprecation ...` to show where the warning was created)
Extension 'ms-dotnettools.csharp' v1.25.9 was successfully installed.
```

# VSCode Unity拡張機能のインストール
Unity独自のメソッドなどを補完してくれる拡張機能をインストールします。

```bash
code --install-extension kleber-swf.unity-code-snippets --force
```

![UnityExtension.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469079/fd24f872-77af-e1ed-a374-6f6ba09975cc.png)

https://marketplace.visualstudio.com/items?itemName=kleber-swf.unity-code-snippets

```bash:Unity拡張機能のインストール
$ code --install-extension kleber-swf.unity-code-snippets --force
Installing extensions...
Installing extension 'kleber-swf.unity-code-snippets'...
(node:17602) [DEP0005] DeprecationWarning: Buffer() is deprecated due to security and usability issues. Please use the Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() methods instead.
(Use `Electron --trace-deprecation ...` to show where the warning was created)
Extension 'kleber-swf.unity-code-snippets' v1.3.0 was successfully installed.
```

# Omnisharp: Use Modern Netの設定変更
VSCode上で設定を起動し、下図の様に`Omnisharp: Use Modern Net`のチェックボックスをオフにします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469079/a485b198-91c8-f899-2a51-df48e1b5747c.png)

# デフォルトエディターをVSCodeに設定
UnityのPreferenceを起動し、`External Tools > External Script Editor`を`Visual Studio Code`に設定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469079/40128b8c-d9be-c402-dc1f-bc99740d4572.png)

# まとめ
UnityのデフォルトエディターをVSCodeに設定する方法を紹介しました。VSCodeが普及して久しい今日、デフォルトはVSCode、オプションはVisual Studioになってくれる時が来ることを願ってこの記事を締めくくりたいと思います。

# Reference
https://code.visualstudio.com/docs/other/unity#_setup-vs-code-as-unity-script-editor