【问题标题】:Unity custom UnityEngine.UI button inspectorUnity 自定义 UnityEngine.UI 按钮检查器
【发布时间】:2017-02-22 21:43:56
【问题描述】:

我自己实现了一个按钮,它继承自 UnityEngine.UI.Button,并且有自己的自定义检查器。

public class TwoStateButton : Button
{
    ...
}

[CustomEditor(typeof(TwoStateButton))]
public class TwoStateButtonEditor : Editor
{
    public override void OnInspectorGUI()
    {
        base.OnInspectorGUI();
    }

    ...
}

我有一个问题,只要我有自定义编辑器,按钮检查器中的转换模式设置的行为对于我的类 TwoStateButton 就不能正常工作。

Button 检查器看起来像this,如果我删除或注释掉自定义编辑器类,TwoStateButton 检查器也是如此。

但我的自定义检查器看起来像 this,尽管我没有对检查器进行任何更改。

因此,基本上,哪些字段可见的行为会根据转换模式而改变,并且始终显示所有设置。

我尝试将base.OnInspectorGUI();DrawDefaultInspector(); 交换,但没有效果。 我尝试导入 UnityEditor.UI 库并让我的 TwoStateButtonEditor 继承自 ButtonEditor 而不是 Editor,但没有效果。

有没有办法制作自定义编辑器,但仍保留转换模式设置行为?

【问题讨论】:

    标签: c# unity3d unity5


    【解决方案1】:

    您的编辑器看起来不像 Button 的编辑器的原因是因为您正在创建一个新的自定义编辑器,而不是从自定义 Button 编辑器扩展而来。如果你这样做了,你会得到你想要的行为。您还可以复制 Button 的自定义编辑器并根据需要进行更改。

    Button Editor 扩展自 Selectable Editor

    【讨论】:

    • 我之前确实尝试过,如上所述,但没有效果。但我一定是做错了什么,因为这确实解决了我的问题。谢谢!
    • 我做错的很可能是我继承了ButtonEditor,但如果有人有这个问题,我会调用DrawDefaultInspector()而不是base.OnInspectorGUI()。
    【解决方案2】:

    您可以通过检查 OnInspectorGui 方法中的转换模式来做到这一点。

    类似:

    [CustomEditor(typeof(TwoStateButton))]
    public class TwoStateButtonEditor : Editor
    {
        public override void OnInspectorGUI()
        {
            base.OnInspectorGUI();
            switch(target.transitionMode)
            {
                case Automatic:
                    //Automatic code
                    [...]
                    break;
                case ColorTint:
                    //Color Tint code
                    [...]
                    break;
                default:
                    break;
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-01
      • 1970-01-01
      • 2020-08-19
      • 2021-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多