Passion & UI
This commit is contained in:
71
Assets/Scripts/Settings/UI/SettingsDescriptionPanel.cs
Normal file
71
Assets/Scripts/Settings/UI/SettingsDescriptionPanel.cs
Normal 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user