From 289bfc61111b70301901281853edbf07a5ec94c2 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, 14 Oct 2025 17:07:30 +0800 Subject: [PATCH] fix --- Runtime/UXComponent/Button/UXButton.cs | 17 +++++++++++++++-- Runtime/UXComponent/Group/UXGroup.cs | 19 ++++++++++--------- 2 files changed, 25 insertions(+), 11 deletions(-) diff --git a/Runtime/UXComponent/Button/UXButton.cs b/Runtime/UXComponent/Button/UXButton.cs index 2f51090..89d0082 100644 --- a/Runtime/UXComponent/Button/UXButton.cs +++ b/Runtime/UXComponent/Button/UXButton.cs @@ -94,7 +94,20 @@ public class UXButton : UIBehaviour, IButton, public bool Selected { get => _mTogSelected; - internal set + set + { + if ((m_Mode == ButtonModeType.Normal && value) || m_Mode == ButtonModeType.Toggle) + { + if (m_Mode == ButtonModeType.Toggle) _mTogSelected = !value; + HandleClick(); + } + } + } + + internal bool InternalTogSelected + { + get => _mTogSelected; + set { if (_mTogSelected == value) return; _mTogSelected = value; @@ -223,7 +236,7 @@ public class UXButton : UIBehaviour, IButton, } else { - Selected = !Selected; + InternalTogSelected = !Selected; } } diff --git a/Runtime/UXComponent/Group/UXGroup.cs b/Runtime/UXComponent/Group/UXGroup.cs index c7497f8..73183fb 100644 --- a/Runtime/UXComponent/Group/UXGroup.cs +++ b/Runtime/UXComponent/Group/UXGroup.cs @@ -30,7 +30,7 @@ public class UXGroup : UIBehaviour { foreach (var btn in m_Buttons) if (btn) - btn.Selected = false; + btn.InternalTogSelected = false; m_Buttons.Clear(); base.OnDestroy(); } @@ -41,10 +41,10 @@ public class UXGroup : UIBehaviour if (m_Buttons.Contains(button)) return; m_Buttons.Add(button); - if (button.Selected) + if (button.InternalTogSelected) { if (_current && _current != button) - _current.Selected = false; + _current.InternalTogSelected = false; _current = button; } @@ -57,14 +57,14 @@ public class UXGroup : UIBehaviour m_Buttons.Remove(button); if (_current == button) _current = null; - button.Selected = false; + button.InternalTogSelected = false; } internal void NotifyButtonClicked(UXButton button) { if (!button) return; - if (button.Selected) + if (button.InternalTogSelected) { if (m_AllowSwitchOff) SetSelected(null); } @@ -76,14 +76,15 @@ public class UXGroup : UIBehaviour private void SetSelected(UXButton target) { + if (_current == target) return; var previous = _current; _current = null; foreach (var btn in m_Buttons) { bool select = (btn == target); - if (btn.Selected != select) - btn.Selected = select; + if (btn.InternalTogSelected != select) + btn.InternalTogSelected = select; if (select) _current = btn; } @@ -93,7 +94,7 @@ public class UXGroup : UIBehaviour private void ValidateGroup() { - if (_current != null && _current.Selected) return; + if (_current != null && _current.InternalTogSelected) return; if (!m_AllowSwitchOff && m_Buttons.Count > 0) SetSelected(m_Buttons[0]); @@ -102,7 +103,7 @@ public class UXGroup : UIBehaviour public bool AnyOtherSelected(UXButton exclude) { foreach (var btn in m_Buttons) - if (btn != exclude && btn.Selected) + if (btn != exclude && btn.InternalTogSelected) return true; return false; }