feat(template): 添加UI页面控制器类模板

- 创建PageControllerTemplate.cs模板文件
- 实现IController、IUiPageBehaviorProvider和IUiPage接口
- 添加页面生命周期管理方法(OnEnter、OnExit、OnPause、OnResume、OnShow、OnHide)
- 集成CanvasItemUiPageBehavior页面行为实现
- 添加ContextAware和Log注解支持
- 提供页面行为实例的懒加载获取功能
This commit is contained in:
GeWuYou 2026-01-17 19:40:24 +08:00
parent 3137c85449
commit 3bc7e84af4

View File

@ -0,0 +1,87 @@
// meta-name: UI页面控制器类模板
// meta-description: 负责管理UI页面场景的生命周期和架构关联
using Godot;
using GFramework.Core.Abstractions.controller;
using GFramework.Core.extensions;
using GFramework.Game.Abstractions.ui;
using GFramework.Godot.ui;
using GFramework.SourceGenerators.Abstractions.logging;
using GFramework.SourceGenerators.Abstractions.rule;
[ContextAware]
[Log]
public partial class _CLASS_ :_BASE_,IController,IUiPageBehaviorProvider,IUiPage
{
/// <summary>
/// 节点准备就绪时的回调方法
/// 在节点添加到场景树后调用
/// </summary>
public override void _Ready()
{
}
/// <summary>
/// 页面行为实例的私有字段
/// </summary>
private IUiPageBehavior? _page;
/// <summary>
/// 获取页面行为实例如果不存在则创建新的CanvasItemUiPageBehavior实例
/// </summary>
/// <returns>返回IUiPageBehavior类型的页面行为实例</returns>
public IUiPageBehavior GetPage()
{
_page ??= new CanvasItemUiPageBehavior<_BASE_>(this);
return _page;
}
/// <summary>
/// 页面进入时调用的方法
/// </summary>
/// <param name="param">页面进入参数,可能为空</param>
public void OnEnter(IUiPageEnterParam? param)
{
_log.Info("测试主菜单 OnEnter");
}
/// <summary>
/// 页面退出时调用的方法
/// </summary>
public void IUiPage.OnExit()
{
}
/// <summary>
/// 页面暂停时调用的方法
/// </summary>
public void IUiPage.OnPause()
{
}
/// <summary>
/// 页面恢复时调用的方法
/// </summary>
public void IUiPage.OnResume()
{
}
/// <summary>
/// 页面显示时调用的方法
/// </summary>
public void IUiPage.OnShow()
{
}
/// <summary>
/// 页面隐藏时调用的方法
/// </summary>
public void IUiPage.OnHide()
{
}
}