Unity 自定义 UnityEngine.UI 按钮检查器
Unity custom UnityEngine.UI button inspector
我自己实现了一个按钮,继承自UnityEngine.UI.Button,它有自己的自定义检查器。
public class TwoStateButton : Button
{
...
}
[CustomEditor(typeof(TwoStateButton))]
public class TwoStateButtonEditor : Editor
{
public override void OnInspectorGUI()
{
base.OnInspectorGUI();
}
...
}
我有一个问题,只要我有一个自定义编辑器,按钮检查器中的过渡模式设置的行为就不能正常工作我的 class TwoStateButton。
Button 检查器看起来像 this,如果我删除或注释掉自定义编辑器,TwoStateButton 检查器也是如此 class。
但我的自定义检查器看起来像 this,尽管我没有对检查器进行任何更改。
所以基本上,根据转换模式,哪些字段可见的行为会丢失,并且始终显示所有设置。
我试过将 base.OnInspectorGUI();
与 DrawDefaultInspector();
交换,但没有效果。
我已经尝试导入 UnityEditor.UI 库并使我的 TwoStateButtonEditor
继承自 ButtonEditor
而不是 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;
}
}
}
您的编辑器看起来不像 Button 编辑器的原因是您正在创建一个新的自定义编辑器,而不是从自定义 Button 编辑器扩展而来。如果你这样做了,你就会得到你想要的行为。您也可以复制 Button 的自定义编辑器并根据需要进行更改。
Button Editor extends from Selectable Editor
我自己实现了一个按钮,继承自UnityEngine.UI.Button,它有自己的自定义检查器。
public class TwoStateButton : Button
{
...
}
[CustomEditor(typeof(TwoStateButton))]
public class TwoStateButtonEditor : Editor
{
public override void OnInspectorGUI()
{
base.OnInspectorGUI();
}
...
}
我有一个问题,只要我有一个自定义编辑器,按钮检查器中的过渡模式设置的行为就不能正常工作我的 class TwoStateButton。
Button 检查器看起来像 this,如果我删除或注释掉自定义编辑器,TwoStateButton 检查器也是如此 class。
但我的自定义检查器看起来像 this,尽管我没有对检查器进行任何更改。
所以基本上,根据转换模式,哪些字段可见的行为会丢失,并且始终显示所有设置。
我试过将 base.OnInspectorGUI();
与 DrawDefaultInspector();
交换,但没有效果。
我已经尝试导入 UnityEditor.UI 库并使我的 TwoStateButtonEditor
继承自 ButtonEditor
而不是 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;
}
}
}
您的编辑器看起来不像 Button 编辑器的原因是您正在创建一个新的自定义编辑器,而不是从自定义 Button 编辑器扩展而来。如果你这样做了,你就会得到你想要的行为。您也可以复制 Button 的自定义编辑器并根据需要进行更改。
Button Editor extends from Selectable Editor