TH1/My project/Assets/Scripts/UI/HistoryUI.cs
2025-07-10 17:54:39 +08:00

82 lines
2.2 KiB
C#

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