VSCodeで快適にUnity開発するため、いまどき当たり前なコード補完・エラー表示・自動フォーマットの環境を整えたい。
ただ、検索して色々試したが、途中でつまづく手順が多かった。そのため、現時点でうまく行った作業手順をできるだけ漏らさずメモする(2022/02/19時点)。
基本的に以下のドキュメントに従って進め、うまくいかないところを補完する。
- Unity Development with VS Code
確認環境
- MacBook Pro (16-inch 2019)
- macOS Monterey 12.0.1
- Unity 2019.4.33f1 Personal
1. 準備
以下をインストールする。
- .NET Core SDKのインストール。ここでは.NET 6.0 LTSをインストールした。-> https://dotnet.microsoft.com/en-us/download
- Mono Stable版をインストール。ここでは6.12.0(Stable Channel)をインストール -> https://www.mono-project.com/download/stable/
- VS Code MarketplaceからC#拡張機能をインストール。 -> https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.csharp
2. UnityとVSCodeを連携
Unityのツールバーから[Unity] - [Preferences] - [External Tools] を選択。[External Script Editor]でVisual Studio Codeを選択しておく。
そして、以下の設定をsettings.json
に書き込むとコード補完・エラー表示が効くようになる。
"omnisharp.useGlobalMono": "always",
"omnisharp.monoPath": "/Library/Frameworks/Mono.framework/Versions/Current"
うまく機能しない場合は
- VSCodeの再起動
- OmniSharpのReStart(コマンドパレットで「omni」と入れると候補に出てくる)
をしてみるとよい。
- 参考:
- vs code Problems with C# extension, Some projects have trouble loading due to OmniSharp
- 【vscode/Unity】monoを認識せず、インテリセンスが消えたときの対処法
3. Unityの警告を有効にする
ここまででC#に関してコード補完・エラー表示が出るようになっているが、Unityのエラーも表示されるようにしたい。
まず、Unityプロジェクトのルートにomnisharp.json
ファイルを作成し、以下の内容にして保存する。
{
"RoslynExtensionsOptions": {
"EnableAnalyzersSupport": true,
"LocationPaths": ["./NuGet"]
}
}
次に、同じ場所にNuGet/
ディレクトリを作成する。
そして、下記サイトの右に表示されている「Download package」からパッケージをダウンロードする。
ダウンロードされたファイルを解凍する。
unzip microsoft.unity.analyzers.1.12.0.nupkg
そして、中からMicrosoft.Unity.Analyzers.dll
というファイルを抽出する。確認した時点では、analyzers/dotnet/cs
にあった。このファイルをNuGet/
ディレクトリの中へ配置する。
この状況でUnityのエラー表示が機能しているはずなので、テストしてみる。例えば以下のメソッドをプロジェクト内のクラスのどこかに作れば、「The Unity message 'FixedUpdate' is empty. [Assembly-CSharp]csharp(UNT0001)」というUnityの警告が表示される。
void FixedUpdate() {
}
うまく機能しない場合は、前述の通りVSCodeの再起動やOmniSharpのReStartでうまくいくことがある。
4. コードを保存時に自動フォーマットする
settings.json
に以下の設定を書き込めば、コードの保存時に自動フォーマットしてくれる。
"[csharp]": {
"editor.formatOnSave": true
}
以上