Passion & UI

This commit is contained in:
SoulliesOfficial
2026-06-12 17:11:39 -04:00
parent 7bc1e1722c
commit 6d7ebc5825
3444 changed files with 865284 additions and 463132 deletions

View File

@@ -0,0 +1,71 @@
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);
}
}
}
}