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);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|