2025-07-10 17:54:39 +08:00

80 lines
2.1 KiB
C#

using UnityEngine;
using Logic;
using RuntimeData;
using Animancer;
using UnityEngine.UI;
public class AboutUI
{
private Main _main;
private MapData _mapData;
public GameObject ROAboutUI;
public bool NeedShow = false;
private bool _isShowing = false;
private bool _isAnimating = false;
private float _fadeDuration = 0.2f;
public AboutUI(Main main, MapData mapData)
{
_main = main;
_mapData = mapData;
ROAboutUI = UIManager.Instance.ROUIManager.transform.Find("AboutPanel").gameObject;
ROAboutUI.transform.Find("CloseButton").GetComponent<Button>().onClick.AddListener(
() => { NeedShow = false;});
ROAboutUI.gameObject.SetActive(false);
}
public void Update()
{
if (_isAnimating) return;
if (NeedShow && !ROAboutUI.activeSelf)
{
Show();
}
else if (!NeedShow && ROAboutUI.activeSelf)
{
Hide();
}
// 设置界面逻辑(如音量滑块变化、按钮监听等)也可写在这里
}
public void Show()
{
if (_isShowing || _isAnimating) return;
_isShowing = true;
_isAnimating = true;
ROAboutUI.SetActive(true);
AnimancerComponent animancer = ROAboutUI.GetComponent<AnimancerComponent>();
AnimationClip fadeInClip = Resources.Load<AnimationClip>("Animations/UI/SettingPanelFadeIn");
if (fadeInClip != null)
animancer.Play(fadeInClip);
Timer.Instance.TimerRegister(ROAboutUI, () => { _isAnimating = false; }, _fadeDuration);
}
public void Hide()
{
if (!_isShowing || _isAnimating) return;
_isShowing = false;
_isAnimating = true;
AnimancerComponent animancer = ROAboutUI.GetComponent<AnimancerComponent>();
AnimationClip fadeOutClip = Resources.Load<AnimationClip>("Animations/UI/SettingPanelFadeOut");
if (fadeOutClip != null)
animancer.Play(fadeOutClip);
Timer.Instance.TimerRegister(ROAboutUI, () =>
{
ROAboutUI.SetActive(false);
_isAnimating = false;
}, _fadeDuration);
}
}