[hooks][fix]: 修正提交检查并同步 UI 文档

This commit is contained in:
2026-07-21 13:16:45 +08:00
parent 571e299642
commit 4940688687
14 changed files with 35 additions and 33 deletions

View File

@@ -29,6 +29,8 @@ HFFunCatalogue.UIManager.OpenWindow<T>()
关闭窗口会执行 `OnClose`、隐藏实例并放入窗口缓存。需要释放窗口与资源时使用 UI 管理器公开卸载入口,不直接 Destroy 窗口 Prefab 或绕过管理器修改父节点和 siblingIndex。
对关闭后不需要缓存的窗口,可在 `HFUIWindowLayer` 上设置 `isUnloadOnClose = true`。窗口管理器会等待该批窗口的 `OnClose` 生命周期全部完成,再销毁该类型的缓存实例并卸载窗口资源;默认值为 `false`,现有窗口继续保留缓存行为。多开窗口仅在同类型窗口均已关闭后才能完成卸载。
## 生命周期
| 生命周期 | 用途 |

View File

@@ -6,7 +6,7 @@
```csharp
[HFAssetBundlePath("UIWindows/ExampleWindow/ExampleWindow.prefab")]
[HFUIWindowLayer(enHFUICanvasLayer.Dynamic)]
[HFUIWindowLayer(enHFUICanvasLayer.UIWindow, enHFUIWindowLayer.Dynamic, isUnloadOnClose = true)]
public partial class ExampleWindow : AbsHFUIWindow
{
protected override void OnRunAwake()
@@ -15,16 +15,16 @@ public partial class ExampleWindow : AbsHFUIWindow
// 查找控件、绑定按钮、初始化列表。
}
protected override void OnOpen(object[] _args)
protected override void OnOpen(Action _onOpenComplete)
{
base.OnOpen(_args);
// 注册事件并刷新本次显示数据。
base.OnOpen(_onOpenComplete);
}
protected override void OnClose()
protected override void OnClose(Action _onCloseComplete)
{
// 移除事件和计时器。
base.OnClose();
base.OnClose(_onCloseComplete);
}
}
```
@@ -37,11 +37,14 @@ HFFunCatalogue.UIManager.OpenWindow<ExampleWindow>();
不要直接实例化窗口 Prefab,也不要直接调用内部 `HFUIWindowMgr` 单例。
`isUnloadOnClose` 默认是 `false`。设为 `true` 后,通过 UI 管理器或窗口自身调用 `CloseWindow` 时,会在 `OnClose` 完成后自动销毁缓存实例并卸载窗口资源,适用于低频且内存占用较大的窗口。频繁开关的窗口应保留默认缓存行为,避免反复加载 Prefab 和 AssetBundle。
## 二、生命周期规则
- `OnRunAwake`:实例首次绑定时执行一次,适合控件查找、按钮绑定和虚拟列表初始化。
- `OnOpen`:每次打开执行,适合注册事件、应用参数和刷新数据数量。
- `OnClose`:每次关闭执行,与 `OnOpen` 中的监听、计时器和临时状态对称清理。
- 重写 `OnOpen(Action)` 或 `OnClose(Action)` 时必须保证完成回调最终且仅调用一次;自动卸载窗口会在 `OnClose` 完成回调后执行。
- 列表初始化不能依赖数据已经到达;先以数量 `0` 初始化,数据准备后再刷新数量。
## 三、单列虚拟列表

View File

@@ -77,4 +77,4 @@ JSON 生成适合批量创建稳定层级和组件,不代替视觉校对、业
| [UI 窗口系统](README.md) | 窗口框架和资源路径 |
| [UI 开发指南](开发指南.md) | 生命周期和虚拟列表接口 |
| [UI 拼接工具](../编辑器工具/UI拼接工具.md) | MCP JSON/Prefab 工具 |
| [MCP 使用规则](../编辑器工具/MCP工具/CrystalBattle_Codex_Unity_MCP使用规则.md) | Codex 与 Unity 的调用规则 |
| [MCP 使用规则](../编辑器工具/MCP工具/Codex_Unity_MCP使用规则.md) | Codex 与 Unity 的调用规则 |