Files
aibis-dream/Assets/Scripts/UI/Panel/InfoPanel.cs
T
dingyuntian 55e7a5c18c 手机端问题修改
1. tap跳转功能实现
2. 跳字优化
2025-12-29 17:42:15 +08:00

93 lines
2.5 KiB
C#

using AibisDream.Kit;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
namespace AibisDream.UI
{
public class InfoPanel : MonoBehaviour, IUIPanel
{
[SerializeField] private DemoTimer demoTimer;
[SerializeField] private GameObject loading;
[SerializeField] private GameObject messageBox;
private IActionController _messageActionController;
public void SetTimerActive(bool isOpen)
{
demoTimer.gameObject.SetActive(isOpen);
}
public void SetTimerDuration(int time)
{
demoTimer.totalTimeInSeconds = time;
}
public void ShowLoading()
{
loading?.SetActive(true);
}
public void HideLoading()
{
loading?.SetActive(false);
}
/// <summary>
/// 显示消息,并在指定时间后自动隐藏
/// </summary>
/// <param name="message">要显示的消息内容</param>
/// <param name="duration">显示持续时间(秒),默认2秒</param>
public void ShowMessage(string message, float duration = 2f)
{
// 如果之前有消息正在显示,先取消之前的延时动作
if (_messageActionController != null)
{
_messageActionController.Deinit();
_messageActionController = null;
}
if (messageBox != null)
{
messageBox.GetComponentInChildren<TMP_Text>().text = message;
messageBox.SetActive(true);
// 使用ActionKit创建延时动作
_messageActionController = ActionKit.Delay(duration, () =>
{
HideMessage();
_messageActionController = null;
}).Start(this);
}
}
public void HideMessage()
{
// 如果消息正在显示,取消延时动作
if (_messageActionController != null)
{
_messageActionController.Deinit();
_messageActionController = null;
}
if (messageBox != null)
{
messageBox.SetActive(false);
}
}
public void Show()
{
gameObject.SetActive(true);
}
public void Hide()
{
gameObject.SetActive(false);
}
public bool IsOpen => gameObject.activeSelf;
public bool IsCloseable => false;
}
}