我们如何为Unity组件类创建编辑器脚本

时间:2017-04-12 11:07:47

标签: c# unity3d scripting editor

正如大家可能知道的那样,我们可以为monobehaviour类创建编辑器脚本。

我希望能够为Component制作编辑器。 有可能吗?

编辑1

我不是在询问Monobehaviour编辑器类,而是询问Component类。

编辑2

我说的是通过编辑器完全扩展Component类。 准确编写" Component"的编辑器,以便能够为Transform Component,Rigidbody组件等制作自定义检查器

1 个答案:

答案 0 :(得分:0)

我猜你正在寻找的是一种覆盖默认Unity组件编辑器脚本的方法(MonoBehaviour脚本基本上是由你创建的组件)。我建议使用第一种方法:

  • 如果您只是想改变Unity组件的完整显示方式,您可以创建一个从您想要更改的组件派生的新类,并将其编写为自定义检查器:

    using UnityEngine;
    
    #if UNITY_EDITOR
    using UnityEditor;
    #endif
    
    public class YOUR_CLASS_NAME : THE_CLASS_YOU_DERIVE_FROM
    {
    }
    
    #if UNITY_EDITOR
    [CustomEditor(typeof(YOUR_CLASS_NAME))]
    public class YOUR_CLASS_NAME_CUSTOM_EDITOR : Editor
    {
        public override void OnInspectorGUI()
        {
            // If you want to display THE_CLASS_YOU_DERIVE_FROM as it is usually on the inspector (doesn't completely work with some components that have "complex" editor)
            base.OnInspectorGUI();
    
            // Otherwise feel free to do what you want
        }
    }
    #endif
    

请注意,您也可以使用2个脚本执行此操作(只需不要忘记将编辑器放在 ... / Editor /...文件夹下:)

  • 请记住,如果这不是要覆盖Unity默认组件,您还可以使用 PropertyDrawers 更改检查器中序列化属性的显示方式。您可以查看this link以获取更多信息。

希望这有帮助,