com.alicizax.unity.ui.exten.../Runtime/UXComponent/UXUIAnimation.cs

78 lines
2.5 KiB
C#
Raw Normal View History

2025-09-25 11:09:09 +08:00
using System;
2025-09-25 19:26:15 +08:00
using System.Collections.Generic;
2025-09-25 11:09:09 +08:00
using AlicizaX.UI.Runtime;
2025-09-25 19:26:15 +08:00
using Sirenix.OdinInspector;
2025-09-25 11:09:09 +08:00
using UnityEngine;
namespace AlicizaX.UI.Extension.UXComponent
{
[RequireComponent(typeof(AnimationFlow.Runtime.AnimationFlow))]
public class UXUIAnimation : MonoBehaviour
{
2025-09-25 19:26:15 +08:00
[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;
2025-10-22 16:25:30 +08:00
[LabelText("关闭动画")] [BoxGroup("基础设置", true)] [ValueDropdown("GetAllAnimationClips", ExpandAllMenuItems = true)] [SerializeField]
private string InitAnimationName;
2025-09-25 11:09:09 +08:00
private UIHolderObjectBase _holderObjectBase;
2025-09-25 19:26:15 +08:00
#if UNITY_EDITOR
public List<string> GetAllAnimationClips
{
get
{
if (animationFlow == null)
{
animationFlow = GetComponent<AnimationFlow.Runtime.AnimationFlow>();
}
return animationFlow.GetAllAnimationClips;
}
}
2025-09-25 11:09:09 +08:00
2025-09-25 19:26:15 +08:00
#endif
2025-09-25 11:09:09 +08:00
private void OnValidate()
{
animationFlow = GetComponent<AnimationFlow.Runtime.AnimationFlow>();
}
private void Awake()
{
_holderObjectBase = GetComponent<UIHolderObjectBase>();
_holderObjectBase.OnWindowShowEvent += ShowAnimation;
_holderObjectBase.OnWindowClosedEvent += CloseAnimation;
2025-10-22 16:25:30 +08:00
_holderObjectBase.OnWindowInitEvent += InitAnimation;
2025-09-25 11:09:09 +08:00
}
private void OnDestroy()
{
2025-10-22 16:25:30 +08:00
_holderObjectBase.OnWindowInitEvent -= InitAnimation;
2025-09-25 11:09:09 +08:00
_holderObjectBase.OnWindowShowEvent -= ShowAnimation;
_holderObjectBase.OnWindowClosedEvent -= CloseAnimation;
}
2025-10-22 16:25:30 +08:00
private void InitAnimation()
{
if (!string.IsNullOrEmpty(InitAnimationName))
{
animationFlow.Play(InitAnimationName);
}
}
2025-09-25 11:09:09 +08:00
internal void ShowAnimation()
{
animationFlow.Play(ShowAnimationName);
}
internal void CloseAnimation()
{
animationFlow.Play(HideAnimationName);
}
}
}