うにてぃブログ

主にUnityとC#に関する記事を書いていきます

【Unity】スクリプトを右クリックすると #if UNITY_EDITOR を追加する拡張

どこで使えるかわかりませんが、スクリプトを右クリックで #if UNITY_EDITOR を追加する拡張を作成しました

f:id:hacchi_man:20201110005739p:plain:w400

f:id:hacchi_man:20201110005803p:plain:w200

f:id:hacchi_man:20201110005841p:plain:w400

public static class AddIf
{
    [MenuItem("Assets/Add if UNITY_Editor")]
    private static void AddEditorDefine()
    {
        var guids = Selection.assetGUIDs;
        foreach (var guid in guids)
        {
            var path = AssetDatabase.GUIDToAssetPath(guid);
            var ext = System.IO.Path.GetExtension(path);
            if (ext != ".cs")
                continue;

            var lines = System.IO.File.ReadAllLines(path);
            if (HasDefine(lines))
                return;

            ArrayUtility.Insert(ref lines, 0, "#if UNITY_EDITOR");
            ArrayUtility.Insert(ref lines, lines.Length, "#endif");
            System.IO.File.WriteAllLines(path, lines);
            AssetDatabase.ImportAsset(path);
        }
    }
 
    private static bool HasDefine(string[] lines)
    {
        foreach (var line in lines)
        {
            var trim = line.Trim();
            if (trim.StartsWith("#if UNITY_EDITOR"))
            {
                return true;
            }
            if (trim.StartsWith("namespace") || trim.StartsWith("public"))
            {
                return false;
            }
        }
        return false;
    }
}