GwWuYou a34aa2388a feat(signal): 添加信号连接构建器和流畅API扩展
- 实现 SignalBuilder 类用于流畅方式连接 Godot 信号
- 提供 WithFlags 方法设置连接标志
- 提供 To 方法将信号连接到指定处理方法
- 添加 SignalFluentExtensions 扩展方法提供流畅API
- 支持通过扩展方法创建信号构建器实例
2026-01-02 20:22:28 +08:00

40 lines
1.1 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.

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);
}
}