86 lines
2.2 KiB
C#
86 lines
2.2 KiB
C#
using UnityEngine;
|
|
using Logic;
|
|
using RuntimeData;
|
|
using UnityEngine.UI;
|
|
using Animancer;
|
|
using Logic.CrashSight;
|
|
using TMPro;
|
|
using Logic.Multilingual;
|
|
using TH1_Core.Managers;
|
|
using TH1_Logic.Core;
|
|
using UI;
|
|
|
|
public class MessageUI
|
|
{
|
|
private Main _main;
|
|
private MapData _mapData;
|
|
public GameObject ROMessageUI;
|
|
|
|
public bool NeedShow = false; // 外部可设置,控制显示状态
|
|
|
|
private bool _isShowing = false; // 当前逻辑状态
|
|
private bool _isAnimating = false; // 是否正在播放动画
|
|
private float _fadeDuration = 0.2f;
|
|
|
|
public MessageUI(Main main, MapData mapData)
|
|
{
|
|
_main = main;
|
|
_mapData = mapData;
|
|
ROMessageUI = UIManager.Instance.ROUIManager.transform.Find("MessagePanel").gameObject;
|
|
ROMessageUI.gameObject.SetActive(false);
|
|
}
|
|
|
|
public void Update()
|
|
{
|
|
if (_isAnimating) return;
|
|
|
|
if (NeedShow && !ROMessageUI.activeSelf)
|
|
{
|
|
Show();
|
|
}
|
|
else if (!NeedShow && ROMessageUI.activeSelf)
|
|
{
|
|
Hide();
|
|
}
|
|
}
|
|
|
|
public void Show()
|
|
{
|
|
if (_isShowing || _isAnimating) return;
|
|
|
|
_isShowing = true;
|
|
_isAnimating = true;
|
|
ROMessageUI.SetActive(true);
|
|
|
|
var animancer = ROMessageUI.GetComponent<AnimancerComponent>();
|
|
var fadeIn = Resources.Load<AnimationClip>("Animations/UI/MessagePanelFadeIn");
|
|
if (fadeIn != null)
|
|
{
|
|
animancer.Play(fadeIn);
|
|
}
|
|
|
|
Timer.Instance.TimerRegister(ROMessageUI, () => { _isAnimating = false; }, _fadeDuration,"MessageUI_Show");
|
|
}
|
|
|
|
public void Hide()
|
|
{
|
|
if (!_isShowing || _isAnimating) return;
|
|
|
|
_isShowing = false;
|
|
_isAnimating = true;
|
|
|
|
var animancer = ROMessageUI.GetComponent<AnimancerComponent>();
|
|
var fadeOut = Resources.Load<AnimationClip>("Animations/UI/MessagePanelFadeOut");
|
|
if (fadeOut != null)
|
|
{
|
|
animancer.Play(fadeOut);
|
|
}
|
|
|
|
Timer.Instance.TimerRegister(ROMessageUI, () =>
|
|
{
|
|
ROMessageUI.SetActive(false);
|
|
_isAnimating = false;
|
|
}, _fadeDuration,"MessageUI_Hide");
|
|
}
|
|
}
|