GwWuYou f87c9cf421 style(csharp): 格式化代码样式和优化代码结构
- 统一调整代码注释的缩进格式,保持文档注释的一致性
- 简化对象初始化语法,移除不必要的参数名称指定
- 优化条件语句结构,移除多余的花括号
- 调整方法实现格式,使用表达式主体语法简化代码
- 标准化代码缩进和空格使用,提升代码可读性
- [skip ci]
2026-01-04 22:14:34 +08:00

65 lines
2.0 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(GodotObject 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>
/// <param name="flags">连接标志</param>
/// <returns>当前构建器实例</returns>
public SignalBuilder To(Callable callable, GodotObject.ConnectFlags? flags = null)
{
var finalFlags = flags ?? _flags;
// 根据是否设置了标志来决定连接方式
if (finalFlags is null)
target.Connect(signal, callable);
else
target.Connect(signal, callable, (uint)finalFlags);
return this;
}
/// <summary>
/// 连接信号到指定的可调用对象并立即调用
/// </summary>
/// <param name="callable">要连接的可调用对象</param>
/// <param name="flags">连接标志</param>
/// <param name="args">调用参数</param>
/// <returns>当前构建器实例</returns>
public SignalBuilder ToAndCall(Callable callable, GodotObject.ConnectFlags? flags = null, params Variant[] args)
{
To(callable, flags);
callable.Call(args);
return this;
}
/// <summary>
/// 显式结束,返回 Node
/// </summary>
/// <returns>目标节点</returns>
public GodotObject End()
{
return target;
}
}