C# Unity自定义UnityEngine.UI按钮检查器
我自己实现了一个按钮,它继承自UnityEngine.UI.button,并且有自己的自定义检查器C# Unity自定义UnityEngine.UI按钮检查器,c#,unity3d,unity5,C#,Unity3d,Unity5,我自己实现了一个按钮,它继承自UnityEngine.UI.button,并且有自己的自定义检查器 public class TwoStateButton : Button { ... } [CustomEditor(typeof(TwoStateButton))] public class TwoStateButtonEditor : Editor { public override void OnInspectorGUI() { base.OnIns
public class TwoStateButton : Button
{
...
}
[CustomEditor(typeof(TwoStateButton))]
public class TwoStateButtonEditor : Editor
{
public override void OnInspectorGUI()
{
base.OnInspectorGUI();
}
...
}
我有一个问题,即按钮检查器中的转换模式设置的行为对于我的类TwoStateButton不能正常工作,只要我有一个自定义编辑器
按钮检查器看起来像,如果我删除或注释掉自定义编辑器类,TwoStateButton检查器也是如此
但是我的自定义检查器看起来像,尽管我没有对检查器进行任何更改
public class TwoStateButton : Button
{
...
}
[CustomEditor(typeof(TwoStateButton))]
public class TwoStateButtonEditor : Editor
{
public override void OnInspectorGUI()
{
base.OnInspectorGUI();
}
...
}
因此,基本上,根据过渡模式,哪些字段可见的行为将丢失,并且始终显示所有设置
我尝试过交换base.OnInspectorGUI()代码>带有DrawDefaultInspector()代码>但没有效果。
我尝试导入UnityEdit.UI库,并使我的TwoStateButtoneEditor
继承自ButtoneEditor
,而不是Editor
,但没有效果
有没有一种方法可以创建自定义编辑器,但仍然保持转换模式设置行为?您可以通过在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;
}
}
}
编辑器看起来不像按钮编辑器的原因是,您正在创建一个新的自定义编辑器,而不是从自定义按钮编辑器进行扩展。如果你那样做,你会得到你想要的行为。您还可以复制按钮的自定义编辑器,并根据需要进行更改
扩展自我以前确实尝试过,如前所述,没有效果。但我一定是做错了什么,因为这确实解决了我的问题。非常感谢。我犯的错误很可能是我继承了ButtoneEditor,但调用了DrawDefaultInspector()而不是base.OnInspectorGUI(),如果有人有这个问题的话。