# Godot 扩展方法 (Godot Extensions) ## 概述 Godot 扩展方法模块为 Godot 引擎提供了丰富的便捷扩展方法集合。这些扩展方法简化了常见的 Godot 开发任务,提高了代码的可读性和开发效率。该模块遵循流畅接口设计原则,支持链式调用。 ## 模块结构 ```mermaid graph TD A[Extensions] --> B[GodotPathExtensions] A --> C[NodeExtensions] A --> D[SignalFluentExtensions] A --> E[UnRegisterExtension] D --> F[SignalBuilder] B --> G[路径判断扩展] C --> H[节点生命周期] C --> I[节点查询] C --> J[场景树操作] C --> K[输入控制] C --> L[调试工具] D --> M[信号连接系统] E --> N[事件管理] ``` ## 扩展模块详解 ### 1. 路径扩展 (GodotPathExtensions) 提供 Godot 虚拟路径的判断和识别功能。 **主要方法:** - `IsUserPath()` - 判断是否为 `user://` 路径 - `IsResPath()` - 判断是否为 `res://` 路径 - `IsGodotPath()` - 判断是否为 Godot 虚拟路径 **使用示例:** ```csharp string savePath = "user://save.dat"; string configPath = "res://config.json"; string logPath = "C:/logs/debug.log"; if (savePath.IsUserPath()) Console.WriteLine("用户数据路径"); if (configPath.IsResPath()) Console.WriteLine("资源路径"); if (logPath.IsGodotPath()) Console.WriteLine("Godot 虚拟路径"); else Console.WriteLine("文件系统路径"); ``` ### 2. 节点扩展 (NodeExtensions) 最丰富的扩展模块,提供全面的节点操作功能。 #### 节点生命周期管理 ```csharp // 安全释放节点 node.QueueFreeX(); // 延迟释放 node.FreeX(); // 立即释放 // 等待节点就绪 await node.WaitUntilReadyAsync(); // 检查节点有效性 if (node.IsValidNode()) Console.WriteLine("节点有效"); if (node.IsInvalidNode()) Console.WriteLine("节点无效"); ``` #### 节点查询操作 ```csharp // 查找子节点 var sprite = node.FindChildX("Sprite"); var parent = node.GetParentX(); // 获取或创建节点 var panel = parent.GetOrCreateNode("MainPanel"); // 遍历子节点 node.ForEachChild(sprite => { sprite.Modulate = Colors.White; }); ``` #### 场景树操作 ```csharp // 获取根节点 var root = node.GetRootNodeX(); // 异步添加子节点 await parent.AddChildXAsync(childNode); // 设置场景树暂停状态 node.Paused(true); // 暂停 node.Paused(false); // 恢复 ``` #### 输入控制 ```csharp // 标记输入事件已处理 node.SetInputAsHandled(); // 禁用/启用输入 node.DisableInput(); node.EnableInput(); ``` #### 调试工具 ```csharp // 打印节点路径 node.LogNodePath(); // 打印节点树 node.PrintTreeX(); // 安全延迟调用 node.SafeCallDeferred("UpdateUI"); ``` #### 类型转换 ```csharp // 安全的类型转换 var button = node.OfType