Skip to content

编辑器扩展

unity-csharp-editor-extension-system

编辑器扩展是什么

Unity 编辑器扩展就是:用 C# 改造 Unity Editor,让开发者更快、更安全地做项目。 它不是玩家运行时功能,而是开发阶段用的工具,比如:自定义 Inspector、菜单按钮、工具窗口、批量处理资源、配置检查。

你先记住这条主线

Editor 脚本入口界面修改数据保存变化

最常见的入口有:

  1. MenuItem:给 Unity 顶部菜单加按钮。
  2. EditorWindow:做一个可停靠的工具窗口。
  3. CustomEditor:改某个组件在 Inspector 里的显示方式。
  4. PropertyDrawer:改某一种字段的绘制方式。
  5. SerializedObject / SerializedProperty:安全编辑 Inspector 数据,支持 Undo、多对象编辑、Prefab 覆盖。
  6. AssetDatabase:查找、创建、加载、刷新资源。
  7. Selection / EditorUtility:读取当前选中的对象、弹窗确认等。

最小菜单示例

c
using UnityEditor;
using UnityEngine;

public static class MyMenu
{
    [MenuItem("Tools/Say Hello")]
    private static void SayHello()
    {
        Debug.Log("Hello Editor");
    }
}

这个脚本要放在:

c
Assets/Editor/MyMenu.cs

因为它用了 UnityEditor。运行时代码不能直接引用 UnityEditor,否则打包可能失败。

最小自定义 Inspector 示例

c
using UnityEditor;

[CustomEditor(typeof(EnemyConfig))]
public class EnemyConfigEditor : Editor
{
    private SerializedProperty hp;

    private void OnEnable()
    {
        hp = serializedObject.FindProperty("hp");
    }

    public override void OnInspectorGUI()
    {
        serializedObject.Update();

        EditorGUILayout.PropertyField(hp);

        serializedObject.ApplyModifiedProperties();
    }
}

这里你要理解: serializedObject.Update() 是读取最新数据; PropertyField 是画字段; ApplyModifiedProperties() 是把修改写回去,并尽量保持 Undo、Prefab 覆盖等 Unity 编辑器能力正常。

学习顺序

先学 MenuItem,你能立刻做按钮。 再学 CustomEditor + SerializedProperty,你就能改 Inspector。 然后学 EditorWindow,开始做真正的小工具。 再学 PropertyDrawer,把字段显示做得更专业。 最后补 AssetDatabaseUndoSelection,工具就会越来越像 Unity 原生功能。

参考链接Unity EditorWindowUnity MenuItemUnity CustomEditorUnity SerializedObjectUnity PropertyDrawerUnity Editor 文件夹规则Unity Undo.RecordObjectUnity AssetDatabase

文章评价

读完这篇,留下你的看法

暂无审核通过的评价。

登录账号后才能评价。

本站访客数0总站访问量0本页访问量0