using System; using System.Collections.Generic; using AlicizaX.UI.Runtime; using Sirenix.OdinInspector; using UnityEngine; namespace AlicizaX.UI.Extension.UXComponent { [RequireComponent(typeof(AnimationFlow.Runtime.AnimationFlow))] public class UXUIAnimation : MonoBehaviour { [ReadOnly] [SerializeField] private AnimationFlow.Runtime.AnimationFlow animationFlow; [LabelText("显示动画")] [BoxGroup("基础设置", true)] [ValueDropdown("GetAllAnimationClips", ExpandAllMenuItems = true)] [SerializeField] private string ShowAnimationName; [LabelText("关闭动画")] [BoxGroup("基础设置", true)] [ValueDropdown("GetAllAnimationClips", ExpandAllMenuItems = true)] [SerializeField] private string HideAnimationName; private UIHolderObjectBase _holderObjectBase; #if UNITY_EDITOR public List GetAllAnimationClips { get { if (animationFlow == null) { animationFlow = GetComponent(); } return animationFlow.GetAllAnimationClips; } } #endif private void OnValidate() { animationFlow = GetComponent(); } private void Awake() { _holderObjectBase = GetComponent(); _holderObjectBase.OnWindowShowEvent += ShowAnimation; _holderObjectBase.OnWindowClosedEvent += CloseAnimation; } private void OnDestroy() { _holderObjectBase.OnWindowShowEvent -= ShowAnimation; _holderObjectBase.OnWindowClosedEvent -= CloseAnimation; } internal void ShowAnimation() { animationFlow.Play(ShowAnimationName); } internal void CloseAnimation() { animationFlow.Play(HideAnimationName); } } }