mcpField
U
Unity Editor Tools

Unity Editor Tools

github.com/juliankerignard開発853 回インストール32 週間前に更新
リポジトリ

Unity Editor Tools について

Unity Editor Toolsは、開発ワークフローを効率化するUnityエディター拡張の生成を支援するスキルです。インスペクター、プロパティドロワー、ウィンドウ、メニュー操作、ウィザード、アセット処理を扱います。

主な機能

  1. 01CustomEditorインスペクターの生成
  2. 02PropertyDrawerコントロールの作成
  3. 03EditorWindowツールの構築
  4. 04MenuItemアクションの追加
  5. 05ScriptableWizardワークフローの作成
  6. 06AssetPostprocessorによるアセット処理

活用シーン

  1. 01コンポーネントのInspectorをカスタマイズ
  2. 02専用のエディターツールウィンドウを追加
  3. 03頻繁に使うメニュー操作を自動化
  4. 04アセットのインポート時に処理を適用

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/juliankerignard/unity-skills --skill unity-editor-tools

インストール後、Claude Code で/unity-editor-toolsを入力して読み込まれたか確認します。

同梱ファイルreferences/editor-templates.md

詳細

Unity Editor ツール

このスキルでできること

このスキルは、開発ワークフローを効率化するために、Unity エディター用のカスタムツールを生成します。CustomEditor、PropertyDrawer、EditorWindow、MenuItem、ScriptableWizard、AssetPostprocessor など、あらゆる種類のエディター拡張に対応しています。

前提条件

  • Assets/Scripts/ がすでに存在する Unity プロジェクト
  • ツール化するコンポーネントまたはワークフローに関する知識
  • Unity MCP への依存なし:Read、Write、Edit、Grep、Glob、Bash のみを使用します

クイックスタート

  1. エディターで効率化するワークフローを特定します
  2. 意思決定ツリーからツールの種類を選択します
  3. Editor アセンブリの構成を確認します
  4. 適切なテンプレートを使ってスクリプトを生成します
  5. Unity で視覚的に確認します

意思決定ツリー

どの種類のエディターツールを作成しますか?

ニーズ種類基底クラス
Inspector でのコンポーネントの表示をカスタマイズするCustomEditorEditor
特定のフィールド型の描画をカスタマイズするPropertyDrawerPropertyDrawer
独立したツールウィンドウを作成するEditorWindowEditorWindow
メニューにクイックアクションを追加するMenuItem静的属性
ステップごとのウィザードを作成するScriptableWizardScriptableWizard
インポート時にアセットを処理するAssetPostprocessorAssetPostprocessor

ステップごとのガイド

ステップ 1:効率化するワークフローを特定する

ユーザーのニーズを分析します。既存のコンポーネントをスキャンします。

Glob : Assets/Scripts/**/*.cs
Grep : "class.*MonoBehaviour" dans les fichiers trouves

重要な質問:どのコンポーネントをより簡単に編集したいですか?どのアクションを自動化しますか?どのような視覚的なフィードバックが不足していますか?

ステップ 2:Editor アセンブリの構成を確認する

コードを生成する前に、Editor の基盤が存在することを確認します。

1. Glob : Assets/**/Editor/*.asmdef OR Assets/**/Editor.asmdef
2. Si absent : creer le dossier Assets/Scripts/Editor/
3. Creer Game.Editor.asmdef avec reference a Game.Runtime
4. Verifier que le .asmdef cible uniquement la plateforme Editor

Game.Editor.asmdef のファイル構成:

{
    "name": "Game.Editor",
    "rootNamespace": "",
    "references": ["Game.Runtime"],
    "includePlatforms": ["Editor"],
    "excludePlatforms": [],
    "allowUnsafeCode": false,
    "overrideReferences": false
}

Game.Runtime.asmdef が存在しない場合は、Assets/Scripts/ 内を Glob で確認し、必要であれば作成します。

ステップ 3:エディタースクリプトを生成する

利用可能なテンプレートは references/editor-templates.md にあります。

テンプレート基底クラス用途
CustomEditor(IMGUI)Editorバージョンを問わず使用できるカスタム Inspector
CustomEditor(UI Toolkit)Editor複雑な Inspector、バインディングを自動化
PropertyDrawerPropertyDrawerフィールド型のカスタム描画
EditorWindowEditorWindowタブとツールバーを備えたツールウィンドウ
MenuItem静的属性Unity メニューのクイックアクション

Unity 6 以降では、複雑な EditorWindow と CustomEditor には IMGUI より UI Toolkit を優先してください。シンプルな PropertyDrawer では、引き続き IMGUI を使用できます。

ステップ 4:視覚的な確認

スクリプトの生成後:

  1. ファイルが正しいフォルダー(Assets/Scripts/Editor/ または Assets/Editor/)にあることを確認します
  2. コンパイルエラーがないことを確認します。不足している依存関係を探します
  3. using UnityEditor; が含まれていることを確認します
  4. スクリプトが Runtime アセンブリから Editor の型を参照していないことを確認します

厳守事項

  • エディタースクリプトは必ず Assets/Scripts/Editor/ または Assets/Editor/ に配置します
  • includePlatforms: ["Editor"] を指定した Game.Editor アセンブリ定義を必ず使用します
  • CustomEditor では serializedObject.Update() と ApplyModifiedProperties() を必ず使用します
  • ボタンからオブジェクトを変更する前に、必ず Undo.RecordObject() を使用します
  • PropertyDrawer では EditorGUI.BeginProperty/EndProperty を必ず使用します
  • Runtime アセンブリから Editor のコードを参照してはいけません
  • CustomEditor でキャストせずに target を使用してはいけません((T)target または serializedObject を使用します)
  • Drawer でサブフィールドを描画するときに、GUIContent.none を忘れてはいけません
  • Assets/Scripts/ のルートにエディターファイルを作成してはいけません

関連スキル

  • Inspector を作成する前にコンポーネントを生成しますか? /unity-code-gen(Unity Code Gen)を使用します
  • ランタイム UI(エディターではない UI)を作成しますか? /uitk(Unity UI Toolkit)を使用します
  • エディターツールをテストしますか? /unity-test(Unity Test)を使用します

トラブルシューティング

問題解決策
The type or namespace 'Editor' could not be foundスクリプトが Editor フォルダーにないか、アセンブリ定義に includePlatforms: ["Editor"] がありません
カスタム Inspector が表示されないtypeof(TargetComponent) が対象の型と完全に一致していること、およびスクリプトがコンパイルされることを確認します
OnEnable で NullReferenceException が発生するFindProperty() のプロパティ名が [SerializeField] フィールド名と一致していません(大文字と小文字を区別します)
PropertyDrawer が適用されない属性 [CustomPropertyDrawer(typeof(T))] がフィールドではなく、正しい型を対象にしていることを確認します
Multiple editors 警告2 つの CustomEditor が同じ型を対象にしています。プロジェクト全体で CustomEditor(typeof(X)) を grep します
MenuItem がグレー表示されるValidate メソッドが false を返しています。検証条件を確認します
変更を元に戻せない(Ctrl+Z)直接変更を加える前に Undo.RecordObject() を追加します

コメント