# 信号连接系统 (Signal Connection System) ## 概述 信号连接系统是 Godot 扩展方法模块中的一个专门子模块,提供流畅、类型安全的 Godot 信号连接 API。该系统采用构建器模式(Builder Pattern)和流畅接口设计(Fluent Interface),大大简化了信号订阅代码,提高了代码的可读性和可维护性。 ## 核心类 ### SignalBuilder 信号连接构建器,负责构建和执行信号连接操作。 **特性:** - 支持链式调用 - 可配置连接标志 - 支持连接后立即调用 - 返回原始对象以便继续操作 ### SignalFluentExtensions 为 `GodotObject` 提供信号连接扩展方法,创建 `SignalBuilder` 实例。 ## 架构设计 ```mermaid graph TD A[GodotObject] --> B[SignalFluentExtensions] B --> C[Signal Extension Method] C --> D[SignalBuilder] D --> E[WithFlags] D --> F[To] D --> G[ToAndCall] D --> H[End] F --> I[Connect Signal] G --> J[Connect + Call] H --> K[Return GodotObject] L[ConnectFlags] --> E M[Callable] --> F M --> G ``` ## 使用示例 ### 基本信号连接 ```csharp // 基本连接 button.Signal(Button.SignalName.Pressed) .To(new Callable(this, nameof(OnButtonPressed))); // 带连接标志 timer.Signal(Timer.SignalName.Timeout) .WithFlags(GodotObject.ConnectFlags.OneShot) .To(new Callable(this, nameof(OnTimerTimeout))); ``` ### 连接并立即调用 ```csharp // 连接信号并立即调用一次 button.Signal(Button.SignalName.Pressed) .ToAndCall(new Callable(this, nameof(OnButtonPressed))); // 连接带参数的信号并立即调用 area2D.Signal(Area2D.SignalName.BodyEntered) .ToAndCall(new Callable(this, nameof(OnBodyEntered)), new Variant[] { node }); ``` ### 复杂的连接链 ```csharp // 设置连接标志并连接 player.Signal(Player.SignalName.HealthChanged) .WithFlags(GodotObject.ConnectFlags.Deferred) .To(new Callable(this, nameof(OnHealthChanged))); // 连接多个信号 var button = GetNode