com.alicizax.unity.framework/Runtime/Debugger/DebuggerService.cs
陈思海 cad7722e44 优化
1.重名所有App级模块为Service
2.移除Module中心 移除SingletonManager
3.引入Service Scope Context概念  避免上下文Manager到处引用
4.修复部分bug
2026-03-26 16:14:05 +08:00

127 lines
3.9 KiB
C#

using AlicizaX;
using UnityEngine;
namespace AlicizaX.Debugger.Runtime
{
/// <summary>
/// 调试器管理器。
/// </summary>
[UnityEngine.Scripting.Preserve]
internal sealed partial class DebuggerService : ServiceBase, IDebuggerService
{
private readonly DebuggerWindowGroup m_DebuggerWindowRoot;
private bool m_ActiveWindow;
/// <summary>
/// 初始化调试器管理器的新实例。
/// </summary>
[UnityEngine.Scripting.Preserve]
public DebuggerService()
{
m_DebuggerWindowRoot = new DebuggerWindowGroup();
m_ActiveWindow = false;
}
public int Priority
{
get => -1;
}
/// <summary>
/// 获取或设置调试器窗口是否激活。
/// </summary>
public bool ActiveWindow
{
get { return m_ActiveWindow; }
set { m_ActiveWindow = value; }
}
/// <summary>
/// 调试器窗口根结点。
/// </summary>
public IDebuggerWindowGroup DebuggerWindowRoot
{
get { return m_DebuggerWindowRoot; }
}
/// <summary>
/// 调试器管理器轮询。
/// </summary>
/// <param name="elapseSeconds">逻辑流逝时间,以秒为单位。</param>
/// <param name="realElapseSeconds">真实流逝时间,以秒为单位。</param>
void IServiceTickable.Tick(float deltaTime)
{
if (!m_ActiveWindow)
{
return;
}
m_DebuggerWindowRoot.OnUpdate(Time.deltaTime,Time.realtimeSinceStartup);
}
/// <summary>
/// 关闭并清理调试器管理器。
/// </summary>
protected override void OnInitialize() { }
protected override void OnDestroyService()
{
m_ActiveWindow = false;
m_DebuggerWindowRoot.Shutdown();
}
/// <summary>
/// 注册调试器窗口。
/// </summary>
/// <param name="path">调试器窗口路径。</param>
/// <param name="debuggerWindow">要注册的调试器窗口。</param>
/// <param name="args">初始化调试器窗口参数。</param>
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.");
}
m_DebuggerWindowRoot.RegisterDebuggerWindow(path, debuggerWindow);
debuggerWindow.Initialize(args);
}
/// <summary>
/// 解除注册调试器窗口。
/// </summary>
/// <param name="path">调试器窗口路径。</param>
/// <returns>是否解除注册调试器窗口成功。</returns>
public bool UnregisterDebuggerWindow(string path)
{
return m_DebuggerWindowRoot.UnregisterDebuggerWindow(path);
}
/// <summary>
/// 获取调试器窗口。
/// </summary>
/// <param name="path">调试器窗口路径。</param>
/// <returns>要获取的调试器窗口。</returns>
public IDebuggerWindow GetDebuggerWindow(string path)
{
return m_DebuggerWindowRoot.GetDebuggerWindow(path);
}
/// <summary>
/// 选中调试器窗口。
/// </summary>
/// <param name="path">调试器窗口路径。</param>
/// <returns>是否成功选中调试器窗口。</returns>
public bool SelectDebuggerWindow(string path)
{
return m_DebuggerWindowRoot.SelectDebuggerWindow(path);
}
}
}