using UnityEngine; namespace TEngine { /// /// 调试器管理器。 /// internal sealed partial class DebuggerModule : Module, IDebuggerModule, IUpdateModule { private DebuggerWindowGroup _debuggerWindowRoot; private bool _activeWindow; /// /// 初始化调试器管理器的新实例。 /// public override void OnInit() { _debuggerWindowRoot = new DebuggerWindowGroup(); _activeWindow = false; } /// /// 获取游戏框架模块优先级。 /// /// 优先级较高的模块会优先轮询,并且关闭操作会后进行。 public override int Priority => -1; /// /// 获取或设置调试器窗口是否激活。 /// public bool ActiveWindow { get => _activeWindow; set => _activeWindow = value; } /// /// 调试器窗口根结点。 /// public IDebuggerWindowGroup DebuggerWindowRoot => _debuggerWindowRoot; /// /// 调试器管理器轮询。 /// public void Update(float elapseSeconds, float realElapseSeconds) { if (!_activeWindow) { return; } _debuggerWindowRoot.OnUpdate(elapseSeconds, realElapseSeconds); } /// /// 关闭并清理调试器管理器。 /// public override void Shutdown() { _activeWindow = false; _debuggerWindowRoot.Shutdown(); } /// /// 注册调试器窗口。 /// /// 调试器窗口路径。 /// 要注册的调试器窗口。 /// 初始化调试器窗口参数。 public void RegisterDebuggerWindow(string path, IDebuggerWindow debuggerWindow, params object[] args) { if (string.IsNullOrEmpty(path)) { throw new GameFrameworkException("Path is invalid."); } if (debuggerWindow == null) { throw new GameFrameworkException("Debugger window is invalid."); } _debuggerWindowRoot.RegisterDebuggerWindow(path, debuggerWindow); debuggerWindow.Initialize(args); } /// /// 解除注册调试器窗口。 /// /// 调试器窗口路径。 /// 是否解除注册调试器窗口成功。 public bool UnregisterDebuggerWindow(string path) { return _debuggerWindowRoot.UnregisterDebuggerWindow(path); } /// /// 获取调试器窗口。 /// /// 调试器窗口路径。 /// 要获取的调试器窗口。 public IDebuggerWindow GetDebuggerWindow(string path) { return _debuggerWindowRoot.GetDebuggerWindow(path); } /// /// 选中调试器窗口。 /// /// 调试器窗口路径。 /// 是否成功选中调试器窗口。 public bool SelectDebuggerWindow(string path) { return _debuggerWindowRoot.SelectDebuggerWindow(path); } } }