feat(ui): 添加基于实例的UI显示方法

- 在UiRouterBase中新增Show方法,支持通过IUiPageBehavior实例显示UI
- 为IUiRouter接口添加对应的Show方法重载签名
- 添加详细的XML文档注释说明参数用途
- 临时禁用publish-docs工作流以解决文档生成问题
- [release ci]
This commit is contained in:
GeWuYou 2026-02-03 20:20:41 +08:00
parent c27c02a027
commit efd7ababd2
3 changed files with 53 additions and 7 deletions

View File

@ -1,5 +1,6 @@
# 工作流名称Publish Docs
# 该工作流用于在推送到 main 分支时自动构建并发布文档到 GitHub Pages。
# 暂时关了,目前这个文档生成有问题,以后再改
name: Publish Docs
@ -7,13 +8,13 @@ name: Publish Docs
# 定义工作流的触发规则。当代码仓库发生特定事件时,将自动执行相关操作。
# 此处配置表示当向仓库推送push带有标签tag的提交时触发工作流。
# 标签匹配规则为通配符 '*',即任意标签都会触发。
on:
push:
branches:
- '**'
tags:
- '*'
workflow_dispatch:
#on:
# push:
# branches:
# - '**'
# tags:
# - '*'
# workflow_dispatch:
# 权限配置:指定工作流所需的权限。
# actions: read - 允许读取 GitHub Actions 相关信息。

View File

@ -143,12 +143,29 @@ public interface IUiRouter : ISystem
/// <summary>
/// 在指定层级显示UIOverlay / Modal / Toast等
/// </summary>
/// <param name="uiKey">要显示的UI页面的唯一标识符</param>
/// <param name="layer">UI显示的层级例如 Overlay、Modal 或 Toast</param>
/// <param name="param">可选参数用于传递给UI页面的初始化数据</param>
/// <param name="instancePolicy">UI实例策略默认为复用已存在的实例</param>
void Show(
string uiKey,
UiLayer layer,
IUiPageEnterParam? param = null,
UiInstancePolicy instancePolicy = UiInstancePolicy.Reuse);
/// <summary>
/// 在指定层级显示UIOverlay / Modal / Toast等
/// </summary>
/// <param name="page">要显示的UI页面行为对象</param>
/// <param name="layer">UI显示的层级例如 Overlay、Modal 或 Toast</param>
/// <param name="param">传递给UI页面的初始化数据</param>
/// <param name="enter">是否立即进入UI页面默认为 false</param>
void Show(
IUiPageBehavior page,
UiLayer layer,
IUiPageEnterParam? param,
bool enter = false);
/// <summary>
/// 在指定层级显示UI基于已存在实例
/// </summary>

View File

@ -534,6 +534,34 @@ public abstract class UiRouterBase : AbstractSystem, IUiRouter
Log.Debug("Show existing UI instance in layer: {0}, layer={1}", uiKey, layer);
}
/// <summary>
/// 在指定层级显示UI基于实例
/// </summary>
public void Show(
IUiPageBehavior page,
UiLayer layer,
IUiPageEnterParam? param,
bool enter = false)
{
if (layer == UiLayer.Page)
throw new ArgumentException("Use Push() for Page layer");
var uiKey = page.Key;
if (!_layers.ContainsKey(layer))
_layers[layer] = new Dictionary<string, IUiPageBehavior>();
_layers[layer][uiKey] = page;
_uiRoot.AddUiPage(page, layer);
if (enter)
page.OnEnter(param);
page.OnShow();
Log.Debug("Show existing UI instance in layer: {0}, layer={1}", uiKey, layer);
}
/// <summary>
/// 隐藏指定层级的UI
/// </summary>