feat(signal): 添加信号连接构建器和流畅API扩展

- 实现 SignalBuilder 类用于流畅方式连接 Godot 信号
- 提供 WithFlags 方法设置连接标志
- 提供 To 方法将信号连接到指定处理方法
- 添加 SignalFluentExtensions 扩展方法提供流畅API
- 支持通过扩展方法创建信号构建器实例
This commit is contained in:
GwWuYou 2026-01-02 20:22:28 +08:00
parent 330a06c018
commit a34aa2388a
2 changed files with 60 additions and 0 deletions

View File

@ -0,0 +1,40 @@
using Godot;
namespace GFramework.Godot.extensions.signal;
/// <summary>
/// 信号连接构建器用于以流畅的方式连接Godot信号
/// </summary>
/// <param name="target">要连接信号的目标节点</param>
/// <param name="signal">要连接的信号名称</param>
public sealed class SignalBuilder(Node target, StringName signal)
{
private GodotObject.ConnectFlags? _flags;
/// <summary>
/// 设置连接标志
/// </summary>
/// <param name="flags">连接标志</param>
/// <returns>当前构建器实例</returns>
public SignalBuilder WithFlags(GodotObject.ConnectFlags flags)
{
_flags = flags;
return this;
}
/// <summary>
/// 将信号连接到指定的处理方法
/// </summary>
/// <param name="callable">信号触发时要调用的处理方法</param>
public void To(Callable callable)
{
// 根据是否设置了标志来决定使用哪种连接方法
if (_flags is null)
{
target.Connect(signal, callable);
return;
}
target.Connect(signal, callable, (uint)_flags);
}
}

View File

@ -0,0 +1,20 @@
using Godot;
namespace GFramework.Godot.extensions.signal;
/// <summary>
/// 为Godot Node节点提供信号相关的流畅API扩展方法
/// </summary>
public static class SignalFluentExtensions
{
/// <summary>
/// 为指定节点创建信号构建器
/// </summary>
/// <param name="node">要创建信号的节点</param>
/// <param name="signal">信号名称</param>
/// <returns>信号构建器实例</returns>
public static SignalBuilder Signal(
this Node node,
StringName signal)
=> new(node, signal);
}