This commit is contained in:
陈思海 2025-12-16 16:51:40 +08:00
parent 57972c6900
commit 4546da4928

View File

@ -269,12 +269,24 @@ namespace UnityEngine.UI
if (m_Navigation != null)
{
var modeProp = m_Navigation.FindPropertyRelative("m_Mode");
EditorGUILayout.PropertyField(modeProp, new GUIContent("Navigation"));
int value = modeProp.intValue;
int explicitMask = (int)UXNavigation.Mode.Explicit;
bool onlyExplicit = (value & explicitMask) == explicitMask && (value & ~explicitMask) == 0;
if (!modeProp.hasMultipleDifferentValues && onlyExplicit)
EditorGUI.BeginChangeCheck();
EditorGUI.showMixedValue = modeProp.hasMultipleDifferentValues;
UXNavigation.Mode cur = (UXNavigation.Mode)modeProp.intValue;
UXNavigation.Mode next = (UXNavigation.Mode)EditorGUILayout.EnumFlagsField("Navigation", cur);
EditorGUI.showMixedValue = false;
if (EditorGUI.EndChangeCheck())
{
modeProp.intValue = (int)next;
}
int explicitMask = (int)UXNavigation.Mode.Explicit;
int value = modeProp.intValue;
bool onlyExplicit = !modeProp.hasMultipleDifferentValues && (value & explicitMask) == explicitMask && (value & ~explicitMask) == 0;
if (onlyExplicit)
{
EditorGUILayout.PropertyField(m_Navigation.FindPropertyRelative("m_SelectOnUp"));
EditorGUILayout.PropertyField(m_Navigation.FindPropertyRelative("m_SelectOnDown"));
@ -282,6 +294,7 @@ namespace UnityEngine.UI
EditorGUILayout.PropertyField(m_Navigation.FindPropertyRelative("m_SelectOnRight"));
}
serializedObject.ApplyModifiedProperties();
}
@ -294,7 +307,6 @@ namespace UnityEngine.UI
{
(target as UXSelectable).Interactable = interactable;
m_Interactable.boolValue = interactable;
// keep selection state consistent
var selProp = serializedObject.FindProperty("m_SelectionState");
if (selProp != null)
{