Files
Cielonos/Assets/Scripts/Settings/UI/SettingsDescriptionPanel.cs
SoulliesOfficial 6d7ebc5825 Passion & UI
2026-06-12 17:11:39 -04:00

72 lines
1.9 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using TMPro;
using UnityEngine;
namespace Cielonos.Settings.UI
{
/// <summary>
/// 设置界面右侧的悬停说明面板。
/// <para>
/// 当鼠标悬停到某个 SettingsEntry 时显示该条目的标题和说明文本,
/// 鼠标离开后隐藏。此面板不是 <see cref="SLSUtilities.UI.UIPageBase"/>
/// 按 ESC 时由设置界面整体处理退出逻辑。
/// </para>
/// </summary>
public class SettingsDescriptionPanel : MonoBehaviour
{
[SerializeField] private TMP_Text titleText;
[SerializeField] private TMP_Text descriptionText;
[SerializeField] private CanvasGroup canvasGroup;
private void Awake()
{
if (canvasGroup == null)
canvasGroup = GetComponent<CanvasGroup>();
Hide();
}
/// <summary>
/// 显示说明面板。如果 description 为空则不显示。
/// </summary>
/// <param name="title">条目标题。</param>
/// <param name="description">条目说明文本。</param>
public void Show(string title, string description)
{
if (string.IsNullOrEmpty(description))
{
Hide();
return;
}
if (titleText != null)
titleText.text = title;
if (descriptionText != null)
descriptionText.text = description;
SetVisible(true);
}
/// <summary>
/// 隐藏说明面板。
/// </summary>
public void Hide()
{
SetVisible(false);
}
private void SetVisible(bool visible)
{
if (canvasGroup != null)
{
canvasGroup.alpha = visible ? 1f : 0f;
canvasGroup.blocksRaycasts = visible;
}
else
{
gameObject.SetActive(visible);
}
}
}
}