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(); var fadeIn = Resources.Load("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(); var fadeOut = Resources.Load("Animations/UI/MessagePanelFadeOut"); if (fadeOut != null) { animancer.Play(fadeOut); } Timer.Instance.TimerRegister(ROMessageUI, () => { ROMessageUI.SetActive(false); _isAnimating = false; }, _fadeDuration,"MessageUI_Hide"); } }