当您按下按钮时,我正在 Unity 中制作一个工具来为多个平台构建您的项目。
我从该工具的首选项窗口开始,并想出了一个令人讨厌的事情。每当我更改 EnumPopup 字段的枚举值时,该字段在编辑器窗口中变为蓝色。有没有办法禁用它?
看看第二张图片中的字段不是蓝色的,而第三张图片中的字段变成了蓝色?我该如何防止这种情况发生?
提前致谢!
当您按下按钮时,我正在 Unity 中制作一个工具来为多个平台构建您的项目。
我从该工具的首选项窗口开始,并想出了一个令人讨厌的事情。每当我更改 EnumPopup 字段的枚举值时,该字段在编辑器窗口中变为蓝色。有没有办法禁用它?
看看第二张图片中的字段不是蓝色的,而第三张图片中的字段变成了蓝色?我该如何防止这种情况发生?
提前致谢!
如果没有其余代码,很难提供帮助。
这是 Unity 的内置行为。我尝试了很多东西,看到这里来禁用/覆盖前缀标签的内置颜色,但到目前为止没有运气。
然而,一个解决方法可能是使用一个独立的EditorGUI.LabelField
,它不会受 与EnumPopup
一起影响EditorGUIUtility.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);
如您所见,标签没有变成蓝色,而宽度保持灵活
旁注
与其直接通过编辑脚本设置值,不如
QuickBuilder.Settings.Relation =
始终尝试使用正确的SerializedProperty。它处理诸如撤消/重做之类的事情,并将相应的对象和场景标记为dirty
.
EditorGUI
您使用而不是还有一个特殊的原因EditorGUILayout
吗?在后者中,您不需要设置Rect
s.
EditorGUILayout.BeginHorizontal();
{
EditorGUILayout.LabelField("File relative to", GUILayout.Width(EditorGUIUtility.labelWidth));
QuickBuilder.Settings.Relation = (QuickBuilder.Settings.PathRelation)EditorGUILayout.EnumPopup(QuickBuilder.Settings.Relation);
}
EditorGUILayout.EndHorizontal();