mirror of
https://github.com/GeWuYou/GFramework.git
synced 2026-03-24 20:34:29 +08:00
- 实现 SignalBuilder 类用于流畅方式连接 Godot 信号 - 提供 WithFlags 方法设置连接标志 - 提供 To 方法将信号连接到指定处理方法 - 添加 SignalFluentExtensions 扩展方法提供流畅API - 支持通过扩展方法创建信号构建器实例
40 lines
1.1 KiB
C#
40 lines
1.1 KiB
C#
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);
|
||
}
|
||
} |