GFramework/Godot/script_templates/Node/PageControllerTemplate.cs
GeWuYou 9ab09cf47b feat(godot): 添加 GetNode 源代码生成器功能
- 实现了 [GetNode] 属性用于标记 Godot 节点字段
- 创建了 GetNodeGenerator 源代码生成器自动注入节点获取逻辑
- 添加了节点路径推导和多种查找模式支持
- 集成了生成器到 Godot 脚手架模板中
- 添加了完整的诊断规则和错误提示
- 创建了单元测试验证生成器功能
- 更新了解决方案配置以包含新的测试项目
- 在 README 中添加了详细的使用文档和示例代码
2026-03-22 15:16:24 +08:00

97 lines
2.2 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 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.Godot.SourceGenerators.Abstractions;
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()
{
__InjectGetNodes_Generated();
OnReadyAfterGetNode();
}
/// <summary>
/// 节点注入完成后的初始化钩子。
/// </summary>
private void OnReadyAfterGetNode()
{
}
/// <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)
{
}
/// <summary>
/// 页面退出时调用的方法
/// </summary>
public void OnExit()
{
}
/// <summary>
/// 页面暂停时调用的方法
/// </summary>
public void OnPause()
{
}
/// <summary>
/// 页面恢复时调用的方法
/// </summary>
public void OnResume()
{
}
/// <summary>
/// 页面显示时调用的方法
/// </summary>
public void OnShow()
{
}
/// <summary>
/// 页面隐藏时调用的方法
/// </summary>
public void OnHide()
{
}
}