From f8a6155921bcc351d75481cd467527b055ea540f Mon Sep 17 00:00:00 2001 From: GeWuYou <95328647+GeWuYou@users.noreply.github.com> Date: Mon, 22 Dec 2025 12:43:39 +0800 Subject: [PATCH] =?UTF-8?q?refactor(input):=20=E9=87=8D=E6=9E=84Godot?= =?UTF-8?q?=E8=BE=93=E5=85=A5=E6=A8=A1=E5=9D=97=E4=BB=A5=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E6=9E=B6=E6=9E=84=E9=9B=86=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除模块附加时的节点创建逻辑 - 将输入系统注入移到Install方法中 - 优化输入转换器注册流程 - 简化模块分离时的资源清理过程 - 统一输入系统的访问方式 - 提高代码可读性和维护性 --- .../input/AbstractGodotInputModule.cs | 27 +++++-------------- 1 file changed, 7 insertions(+), 20 deletions(-) diff --git a/GFramework.Godot/input/AbstractGodotInputModule.cs b/GFramework.Godot/input/AbstractGodotInputModule.cs index 0946b0a..4c14c9e 100644 --- a/GFramework.Godot/input/AbstractGodotInputModule.cs +++ b/GFramework.Godot/input/AbstractGodotInputModule.cs @@ -1,4 +1,4 @@ -using GFramework.Core.architecture; +using GFramework.Core.architecture; using GFramework.Core.constants; using GFramework.Game.input; using GFramework.Godot.architecture; @@ -34,22 +34,6 @@ public abstract class AbstractGodotInputModule : AbstractGodotModule public override Node Node => _node ?? throw new InvalidOperationException("Node not created yet"); - private InputSystem _inputSystem = null!; - - /// - /// 当模块被附加到架构时调用此方法 - /// - /// 要附加到的架构实例 - public override void OnAttach(Architecture architecture) - { - // 创建Godot输入桥接节点并绑定输入系统 - _node = new GodotInputBridge { Name = GodotInputBridgeName }; - _node.Bind(_inputSystem); - } - - /// - /// 当模块从架构中分离时调用此方法 - /// public override void OnDetach() { // 释放节点资源并清理引用 @@ -64,14 +48,17 @@ public abstract class AbstractGodotInputModule : AbstractGodotModule public override void Install(IArchitecture architecture) { // 从架构中获取输入系统实例 - _inputSystem = architecture.GetSystem()!; + var inputSystem = architecture.GetSystem()!; if (EnableDefaultTranslator) { // 注册输入转换器 - _inputSystem.RegisterTranslator(new GodotInputTranslator(), true); + inputSystem.RegisterTranslator(new GodotInputTranslator(), true); } - RegisterTranslator(_inputSystem); + RegisterTranslator(inputSystem); + // 创建Godot输入桥接节点并绑定输入系统 + _node = new GodotInputBridge { Name = GodotInputBridgeName }; + _node.Bind(inputSystem); } ///