Трудно помочь без остатка вашего кода.
Это встроенное поведение 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);
Как видите, этикетка не становится синей, а ширина остается гибкой

Sidenotes
Вместо установки значений с помощью сценариев редактирования, например,
QuickBuilder.Settings.Relation =
вы всегда должны пытаться использовать SerializedProperty . Он обрабатывает такие вещи, как Undo / Redo, а также помечает соответствующие объекты и сцены как 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();