From b7bbd9f6c6133a4c09ecc76e7b8035e6dace127d 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, 29 Jul 2025 17:25:18 +0800 Subject: [PATCH] modify --- Editor/UX/UXButtonEditor.cs | 7 +++--- Runtime/UXComponent/UX/UXButton.cs | 35 +++++++++++++++++++----------- 2 files changed, 25 insertions(+), 17 deletions(-) diff --git a/Editor/UX/UXButtonEditor.cs b/Editor/UX/UXButtonEditor.cs index e80e9a1..801cd38 100644 --- a/Editor/UX/UXButtonEditor.cs +++ b/Editor/UX/UXButtonEditor.cs @@ -18,7 +18,6 @@ internal class UXButtonEditor : Editor Sound, Event } - private SerializedProperty m_Interactable; private SerializedProperty m_Mode; private SerializedProperty m_OnValueChanged; @@ -387,7 +386,7 @@ internal class UXButtonEditor : Editor if (animator == null) { Rect warningRect = new Rect(position.x, y, position.width, lineHeight); - EditorGUI.HelpBox(warningRect, "需要Animation || Animator组件来使用动画切换", MessageType.Warning); + EditorGUI.HelpBox(warningRect, "需要Animator组件来使用动画切换", MessageType.Warning); y += lineHeight + spacing; } @@ -447,7 +446,7 @@ internal class UXButtonEditor : Editor EditorGUILayout.PropertyField(transition); - var animator = graphic != null ? graphic.GetComponent() : null; + var animator = graphic != null ? graphic.GetComponent() : (target as UXButton).GetComponent(); switch (currentTransition) { case Selectable.Transition.ColorTint: @@ -460,7 +459,7 @@ internal class UXButtonEditor : Editor break; case Selectable.Transition.Animation: if (animator == null) - EditorGUILayout.HelpBox("需要Animation || Animator组件来使用动画切换", MessageType.Warning); + EditorGUILayout.HelpBox("需要Animator组件来使用动画切换", MessageType.Warning); break; } diff --git a/Runtime/UXComponent/UX/UXButton.cs b/Runtime/UXComponent/UX/UXButton.cs index a2ffbba..b2706d4 100644 --- a/Runtime/UXComponent/UX/UXButton.cs +++ b/Runtime/UXComponent/UX/UXButton.cs @@ -113,23 +113,32 @@ public class UXButton : UIBehaviour, IButton, #region Unity Lifecycle - protected override void Awake() +#if UNITY_EDITOR + protected override void OnValidate() { - base.Awake(); - _boardEvent = true; - _waitTimeFadeDuration = new WaitForSeconds( - Mathf.Max(0.01f, m_TransitionData.colors.fadeDuration)); + base.OnValidate(); + if (!Application.isPlaying) + { + _boardEvent = true; + _waitTimeFadeDuration = new WaitForSeconds( + Mathf.Max(0.01f, m_TransitionData.colors.fadeDuration)); + _animTriggerIDs.Clear(); + _animResetTriggerIDs.Clear(); + var triggers = m_TransitionData.animationTriggers; + AddTriggerID(triggers.normalTrigger); + AddTriggerID(triggers.highlightedTrigger); + AddTriggerID(triggers.pressedTrigger); + AddTriggerID(triggers.selectedTrigger); + AddTriggerID(triggers.disabledTrigger); - var triggers = m_TransitionData.animationTriggers; - AddTriggerID(triggers.normalTrigger); - AddTriggerID(triggers.highlightedTrigger); - AddTriggerID(triggers.pressedTrigger); - AddTriggerID(triggers.selectedTrigger); - AddTriggerID(triggers.disabledTrigger); - UpdateVisualState(m_SelectionState, true); + UpdateVisualState(m_SelectionState, true); + } } + +#endif // if UNITY_EDITOR + protected override void OnDestroy() { if (_resetRoutine != null) @@ -274,7 +283,7 @@ public class UXButton : UIBehaviour, IButton, private void ProcessTransitionData(TransitionData transition, SelectionState state, bool instant) { - if (transition.targetGraphic == null) return; + if ((transition.transition == Selectable.Transition.ColorTint || transition.transition == Selectable.Transition.SpriteSwap) && transition.targetGraphic == null) return; Color tintColor; Sprite transitionSprite;