72 lines
1.9 KiB
C#
72 lines
1.9 KiB
C#
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);
|
||
}
|
||
}
|
||
}
|
||
}
|