From b9472d59b4e5d235b797445c5aae0a7749444be6 Mon Sep 17 00:00:00 2001 From: max Date: Tue, 22 Nov 2022 10:01:29 +0100 Subject: [PATCH] Button colors - Use default Unity color for button - Make button red when un assigned --- .../SerializeReferenceInspectorButton.cs | 39 ++++++++----------- 1 file changed, 16 insertions(+), 23 deletions(-) diff --git a/DefaultUI/SerializeReferenceInspectorButton.cs b/DefaultUI/SerializeReferenceInspectorButton.cs index d89b937..ba34cdb 100644 --- a/DefaultUI/SerializeReferenceInspectorButton.cs +++ b/DefaultUI/SerializeReferenceInspectorButton.cs @@ -1,5 +1,4 @@ #if UNITY_EDITOR - using System; using System.Collections.Generic; using UnityEditor; @@ -7,39 +6,33 @@ using UnityEngine; public static class SerializeReferenceInspectorButton { - public static readonly Color SerializedReferenceMenuBackgroundColor = new Color(0.1f, 0.55f, 0.9f, 1f); - /// Must be drawn before DefaultProperty in order to receive input - public static void DrawSelectionButtonForManagedReference(this SerializedProperty property, Rect position, IEnumerable> filters = null) => - property.DrawSelectionButtonForManagedReference(position, SerializedReferenceMenuBackgroundColor, filters); - - /// Must be drawn before DefaultProperty in order to receive input - public static void DrawSelectionButtonForManagedReference(this SerializedProperty property, - Rect position, Color color, IEnumerable> filters = null) - { - - var backgroundColor = color; - - var buttonPosition = position; + public static void DrawSelectionButtonForManagedReference(this SerializedProperty property, Rect position, IEnumerable> filters = null) + { + Rect buttonPosition = position; buttonPosition.x += EditorGUIUtility.labelWidth + 1 * EditorGUIUtility.standardVerticalSpacing; buttonPosition.width = position.width - EditorGUIUtility.labelWidth - 1 * EditorGUIUtility.standardVerticalSpacing; buttonPosition.height = EditorGUIUtility.singleLineHeight; - var storedIndent = EditorGUI.indentLevel; + Color storedColor = GUI.backgroundColor; + int storedIndent = EditorGUI.indentLevel; EditorGUI.indentLevel = 0; - var storedColor = GUI.backgroundColor; - GUI.backgroundColor = backgroundColor; - + + (string AssemblyName, string ClassName) = ManagedReferenceUtility.GetSplitNamesFromTypename(property.managedReferenceFullTypename); + + bool isNull = string.IsNullOrEmpty(ClassName); + GUI.backgroundColor = isNull ? Color.red : storedColor; - var names = ManagedReferenceUtility.GetSplitNamesFromTypename(property.managedReferenceFullTypename); - var className = string.IsNullOrEmpty(names.ClassName) ? "Null (Assign)" : names.ClassName; - var assemblyName = names.AssemblyName; - if (GUI.Button(buttonPosition, new GUIContent(className, className + " ( "+ assemblyName +" )" ))) + string className = isNull ? "Null (Assign)" : ClassName; + string assemblyName = AssemblyName; + + if (GUI.Button(buttonPosition, new GUIContent(className, className + " ( "+ assemblyName +" )"))) + { property.ShowContextMenuForManagedReference(buttonPosition, filters); + } GUI.backgroundColor = storedColor; EditorGUI.indentLevel = storedIndent; } } - #endif \ No newline at end of file