From 57972c690066461ce6199d9346f60d2faa20bbf9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E6=80=9D=E6=B5=B7?= <1464576565@qq.com> Date: Tue, 16 Dec 2025 16:48:44 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=20=E8=87=AA=E5=AE=9A?= =?UTF-8?q?=E4=B9=89ui=20navigation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Editor/UX/Selectable/UXSelectableEditor.cs | 18 +++++++++++++++++- Runtime/UXComponent/Selectable/UXNavigation.cs | 8 ++++---- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/Editor/UX/Selectable/UXSelectableEditor.cs b/Editor/UX/Selectable/UXSelectableEditor.cs index f256c93..d84b2c0 100644 --- a/Editor/UX/Selectable/UXSelectableEditor.cs +++ b/Editor/UX/Selectable/UXSelectableEditor.cs @@ -267,7 +267,23 @@ namespace UnityEngine.UI protected void DrawSelectableInspector() { if (m_Navigation != null) - EditorGUILayout.PropertyField(m_Navigation.FindPropertyRelative("m_Mode"), new GUIContent("Navigation")); + { + 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) + { + EditorGUILayout.PropertyField(m_Navigation.FindPropertyRelative("m_SelectOnUp")); + EditorGUILayout.PropertyField(m_Navigation.FindPropertyRelative("m_SelectOnDown")); + EditorGUILayout.PropertyField(m_Navigation.FindPropertyRelative("m_SelectOnLeft")); + EditorGUILayout.PropertyField(m_Navigation.FindPropertyRelative("m_SelectOnRight")); + } + + } + DrawToggleShowNavigation(); diff --git a/Runtime/UXComponent/Selectable/UXNavigation.cs b/Runtime/UXComponent/Selectable/UXNavigation.cs index 11dfd1f..0f6b962 100644 --- a/Runtime/UXComponent/Selectable/UXNavigation.cs +++ b/Runtime/UXComponent/Selectable/UXNavigation.cs @@ -21,10 +21,10 @@ namespace UnityEngine.UI [HideInInspector] [SerializeField] private bool m_WrapAround; - [HideInInspector] [SerializeField] private UXSelectable m_SelectOnUp; - [HideInInspector] [SerializeField] private UXSelectable m_SelectOnDown; - [HideInInspector] [SerializeField] private UXSelectable m_SelectOnLeft; - [HideInInspector] [SerializeField] private UXSelectable m_SelectOnRight; + [SerializeField] private UXSelectable m_SelectOnUp; + [SerializeField] private UXSelectable m_SelectOnDown; + [SerializeField] private UXSelectable m_SelectOnLeft; + [SerializeField] private UXSelectable m_SelectOnRight; public Mode mode {