Unity编辑器-如何在编辑后阻止字段变成蓝色

时间:2019-03-22 12:45:08

标签: unity3d unity-editor

当您按下按钮时,我正在Unity中制作一个工具来为多个平台构建项目。

我从该工具的“首选项”窗口开始,然后想到了一个令人讨厌的东西。每当我更改EnumPopup字段的枚举值时,该字段就会在编辑器窗口中变为蓝色。有办法禁用它吗?

This is the code I am using to show the enum field on the window

This is the window when the enum field has not been changed

This is the window when the enum field has been changed

看看第二张图片中的字段不是蓝色,而在第三张图片中的字段变为蓝色吗?如何防止这种情况发生?

谢谢!

1 个答案:

答案 0 :(得分:0)

在没有其余代码的情况下很难提供帮助。

这是Unity的内置行为。我尝试了很多方法see here来禁用/覆盖前缀标签的内置颜色,但到目前为止还算不上成功。


但是,工作环境可能是改为使用独立的EditorGUI.LabelField,不受EnumPopupEditorGUIUtility.labelWidth的影响:

var LabelRect = new Rect(
    FILEMANAGEMENT_ENUMFIELD_RECT.x, 
    FILEMANAGEMENT_ENUMFIELD_RECT.y,
    // use the current label width
    EditorGUIUtility.labelWidth, 
    FILEMANAGEMENT_ENUMFIELD_RECT.height
);

var EnumRect = new Rect(
    FILEMANAGEMENT_ENUMFIELD_RECT.x + EditorGUIUtility.labelWidth, 
    FILEMANAGEMENT_ENUMFIELD_RECT.y, 
    FILEMANAGEMENT_ENUMFIELD_RECT.width - EditorGUIUtility.labelWidth, 
    FILEMANAGEMENT_ENUMFIELD_RECT.height
);

EditorGUI.LabelField(LabelRect, "File relative to");
QuickBuilder.Settings.Relation = (QuickBuilder.Settings.PathRelation)EditorGUI.EnumPopup(EnumRect, QuickBuilder.Settings.Relation);

如您所见,标签没有变蓝,而宽度保持灵活

enter image description here


边注
而不是直接通过edito脚本来设置值 QuickBuilder.Settings.Relation =,您应该始终尝试使用正确的SerializedProperty。它处理诸如“撤消/重做”之类的事情,还将相应的对象和场景标记为dirty

使用EditorGUI而不是EditorGUILayout还有其他特殊原因吗?在后者中,您不需要设置Rect

EditorGUILayout.BeginHorizontal();
{
    EditorGUILayout.LabelField("File relative to", GUILayout.Width(EditorGUIUtility.labelWidth));
    QuickBuilder.Settings.Relation = (QuickBuilder.Settings.PathRelation)EditorGUILayout.EnumPopup(QuickBuilder.Settings.Relation);
}
EditorGUILayout.EndHorizontal();