Unity で Visual Studio を使った快適なコーディングをするための環境設定


そのままでは痒いところに手が届かないことが多いので、いろいろカスタマイズして快適にしていきます。

環境

  • Unity 2018.4.19f1
  • Visual Studio Community 2019

コード分析規則

Linter文化に慣れた結果ゲーム開発でも規則が欲しくなってしまいました。チーム開発では必須だと思っています。
デフォルトだとエディタからの提案がお節介だったり、警告してほしいところで消極的だったりするので、自分好みに設定していきましょう。

規則セットの追加

プロジェクト用の規則セットファイルを作成して、Assembly-CSharp と Assembly-CSharp-Editor 設定します。
規則セットをカスタマイズする

不要なusingを警告してくれるようになりました。

.csproj に設定を自動追記

このままではUnityは自動で.csprojファイルを書き換えてしまうので、規則セットファイルを読み込む設定が上書きされないように下記のようなエディタ拡張スクリプトを配置します。
規則セットファイル名は{プロジェクト名}.rulesetを前提にしています。

CsprojFixer.cs
using System;
using System.IO;
using UnityEditor;

public class CsprojFixer : AssetPostprocessor
{
    public static string OnGeneratedCSProject(string _, string content)
    {
        // プロジェクト名の抽出
        string currDirPath = Directory.GetCurrentDirectory();
        string[] pathArray = currDirPath.Split(Path.DirectorySeparatorChar);
        string projectName = pathArray[pathArray.Length - 1];

        // .csprojの内容を置換
        string old = "</AllowUnsafeBlocks>";
        string addition = $"<CodeAnalysisRuleSet>{projectName}.ruleset</CodeAnalysisRuleSet>";
        return content.Replace(old, $"{old}{Environment.NewLine}    {addition}");
    }
}

StyleCop.Analyzers

もっと規則にこだわりたければNuGetパッケージの StyleCop.Analyzers を導入します。
NuGetパッケージを導入する場合も、エディタ拡張で.csprojにNuGetパッケージ設定を加える処理を追加する必要があります。

拡張機能

いくつか普段使っている拡張機能も紹介します。

CodeMaid

スペースを入れてくれたり空行を削除してくれたりする便利なフォーマッタです。
申し分ないくらいのオプション設定をすることができて、保存時の自動整形もできます。(うれしい)

普段 VSCode を使っているとこれがないとしんどいです。

Enhanced Syntax Highlighting

シンタックスハイライトでカスタマイズできる種類を少し増やしてくれます。
宣言時だけ色を変えるとかはできないのですが、もともとの設定項目が少ないので少しでもマシになればと思います。

参考