Passion & UI
This commit is contained in:
@@ -13,6 +13,15 @@ namespace SLSUtilities.UI
|
||||
/// </summary>
|
||||
public class UIPageManager : Singleton<UIPageManager>
|
||||
{
|
||||
// ──────────────────── 动态页面 ────────────────────
|
||||
[Header("Dynamic Pages")]
|
||||
[Tooltip("确认 / 提示弹窗的 Prefab(需挂载 ConfirmUIPage 组件)。")]
|
||||
[SerializeField] private GameObject confirmPagePrefab;
|
||||
|
||||
[Tooltip("动态页面实例化的父节点(通常是 Canvas 下的某个 Transform)。")]
|
||||
[SerializeField] private Transform dynamicPageParent;
|
||||
|
||||
// ──────────────────── 页面栈 ────────────────────
|
||||
private readonly List<UIPageBase> openPages = new List<UIPageBase>();
|
||||
|
||||
/// <summary>
|
||||
@@ -28,6 +37,11 @@ namespace SLSUtilities.UI
|
||||
/// <summary>当前栈顶页面,若无则返回 null。</summary>
|
||||
public UIPageBase TopPage => openPages.Count > 0 ? openPages[^1] : null;
|
||||
|
||||
/// <summary>确认页面的 Prefab 引用(以 GameObject 形式暴露,避免跨 Assembly 类型依赖)。</summary>
|
||||
public GameObject ConfirmPagePrefab => confirmPagePrefab;
|
||||
|
||||
// ──────────────────── 页面注册 ────────────────────
|
||||
|
||||
/// <summary>
|
||||
/// 将页面注册到栈顶。若为首个页面则触发 OnInputBlockChanged(true)。
|
||||
/// 由 UIPageBase.Open() 内部调用,不要手动调用。
|
||||
@@ -59,6 +73,8 @@ namespace SLSUtilities.UI
|
||||
}
|
||||
}
|
||||
|
||||
// ──────────────────── 页面关闭 ────────────────────
|
||||
|
||||
/// <summary>
|
||||
/// 关闭栈顶页面(若其允许 ESC 关闭)。由游戏层的 ESC 处理逻辑调用。
|
||||
/// </summary>
|
||||
@@ -85,5 +101,25 @@ namespace SLSUtilities.UI
|
||||
openPages[i].Close();
|
||||
}
|
||||
}
|
||||
|
||||
// ──────────────────── 动态页面实例化 ────────────────────
|
||||
|
||||
/// <summary>
|
||||
/// 在 <see cref="dynamicPageParent"/> 下实例化一个动态页面 Prefab。
|
||||
/// 用于创建运行时弹窗(确认框、提示框等)。
|
||||
/// </summary>
|
||||
/// <param name="prefab">要实例化的 Prefab。</param>
|
||||
/// <returns>实例化后的 GameObject。</returns>
|
||||
public GameObject InstantiateDynamicPage(GameObject prefab)
|
||||
{
|
||||
if (prefab == null)
|
||||
{
|
||||
Debug.LogError("[UIPageManager] Cannot instantiate a null prefab.");
|
||||
return null;
|
||||
}
|
||||
|
||||
Transform parent = dynamicPageParent != null ? dynamicPageParent : transform;
|
||||
return Instantiate(prefab, parent);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user