今回Unity公式のチュートリアル「タワーディフェンステンプレート」で遊びつつ進めていたのですが結構面白かったです。
C#の補完をできるように
C# (for Visual Studio Code)を入れました。こちらはOmniSharpを利用しており、自動補完や定義移動ができるようになります。この時Windowsでは.NET Core SDK、OSX / LinuxではMonoが別途必要になります。(起動時に入っていなければインストールの旨をエラー通知されます。)
Windowsの場合はVisual Studioのツール > ツールと機能を取得からインストール可能です。
Macの場合はMono DownloadからのインストールやHomebrewbrew install mono
が利用できそうです。
Unity側でVisual Studio Codeの利用設定をする
ここまで進めても定義移動すらできなかったので調べていたらドキュメントにちゃんと書いてありました。Unity Development with VS Code
UnityのPackage Manager(Unity Registry)にてVisual Studio Code Editorが入っていることを確認します。
Preferences > External Tools > External Script Editor にてVisual Studio Codeを指定すると、.csproj
や.sln
ファイルが作成されるのでUnityEngine
を含め定義への移動ができるようになりました。
デバッグをできるように
Debugger for Unityが公式から提供されているので簡単に導入できました。
Visual Studio Codeのデバッグからcreate a launchjson file
> Unity Debugger
を選択しRUN
にて実行します。Windowsセキュリティのファイヤーウォール設定を聞かれるので許可をおこなうと、Unity側にも接続の旨が聞かれるので設定します。
UnityのPlayボタンがDebugモードになり実行時にはブレークポイントで止まるようになりました。
2020/10/09 追記
静的解析とリンターの導入
C# (for Visual Studio Code)にはRoslyn Analyzersと、Editor Configのオプションが用意されていました。
UnityでRoslyn Analyzersを利用するには、Assetsフォルダにdllを追加する必要があるようですので後ほど試したいと思います。Unity Roslyn analyzers and ruleset files
C#は{}
ブロックにおけるインデントやプレフィクスが独特だったのでリンターが必要でした。上記Editor Configを有効にし、.editorconfig
をroslyn .editorconfig から複製し導入しました。privateな変数に対し_
のプレフィクスを付与するのは気持ち悪かったのでdotnet_naming_style.instance_field_style.required_prefix = _
を削除しました。
静的解析はまだ未設定ですがこれで少しは安心して開発を進められそうです。
ちなみに、UnityのCollaborateでバージョン管理をしていると、(Assetsフォルダに移動したとしても).editorconfig
はコミット対象になりません。.collabignore
でも除外されているように思えないので、ひとまずテキストフィアルにもコピーして管理しています。。。納得はしていませんが。
How to add .editorconfig to Collaborate?
その他
ほかにはC#FixFormatを入れてみました。Format Document
にて自動整形してくれます。
正常に動作しなかった上、リンターに従うので削除しました。
他にも良いのがあったら記載していこうと思います。