框架支持Shudown不关闭游戏重启

框架支持Shudown不关闭游戏重启
This commit is contained in:
ALEXTANG
2023-10-27 13:18:12 +08:00
parent 381ea8bb8d
commit 48887b1aee
5 changed files with 47 additions and 7 deletions

View File

@@ -23,6 +23,7 @@ namespace GameMain
m_btnClear = FindChildComponent<Button>("TopNode/m_btnClear"); m_btnClear = FindChildComponent<Button>("TopNode/m_btnClear");
m_textAppid = FindChildComponent<Text>("TopNode/m_textAppid"); m_textAppid = FindChildComponent<Text>("TopNode/m_textAppid");
m_textResid = FindChildComponent<Text>("TopNode/m_textResid"); m_textResid = FindChildComponent<Text>("TopNode/m_textResid");
m_scrollbarProgress = FindChildComponent<Scrollbar>("m_scrollbarProgress");
m_btnClear.onClick.AddListener(OnClickClearBtn); m_btnClear.onClick.AddListener(OnClickClearBtn);
} }
#endregion #endregion
@@ -30,7 +31,6 @@ namespace GameMain
public override void OnCreate() public override void OnCreate()
{ {
base.OnCreate(); base.OnCreate();
m_scrollbarProgress = FindChildComponent<Scrollbar>("m_scrollbarProgress");
LoadUpdateLogic.Instance.DownloadCompleteAction += DownLoad_Complete_Action; LoadUpdateLogic.Instance.DownloadCompleteAction += DownLoad_Complete_Action;
LoadUpdateLogic.Instance.DownProgressAction += DownLoad_Progress_Action; LoadUpdateLogic.Instance.DownProgressAction += DownLoad_Progress_Action;
LoadUpdateLogic.Instance.UnpackedCompleteAction += Unpacked_Complete_Action; LoadUpdateLogic.Instance.UnpackedCompleteAction += Unpacked_Complete_Action;
@@ -118,12 +118,12 @@ namespace GameMain
m_scrollbarProgress.size = progress; m_scrollbarProgress.size = progress;
} }
protected override void Close() public override void OnDestroy()
{ {
base.OnDestroy();
OnStop(null); OnStop(null);
LoadUpdateLogic.Instance.DownloadCompleteAction -= DownLoad_Complete_Action; LoadUpdateLogic.Instance.DownloadCompleteAction -= DownLoad_Complete_Action;
LoadUpdateLogic.Instance.DownProgressAction -= DownLoad_Progress_Action; LoadUpdateLogic.Instance.DownProgressAction -= DownLoad_Progress_Action;
base.Close();
} }
} }
} }

View File

@@ -395,7 +395,7 @@ namespace TEngine
DrawDebuggerWindowGroup(subDebuggerWindowGroup); DrawDebuggerWindowGroup(subDebuggerWindowGroup);
} }
debuggerWindowGroup.SelectedWindow.OnDraw(); debuggerWindowGroup?.SelectedWindow?.OnDraw();
} }
private void DrawDebuggerWindowIcon(int windowId) private void DrawDebuggerWindowIcon(int windowId)

View File

@@ -11,18 +11,29 @@ namespace TEngine
{ {
private static readonly Dictionary<Type, Module> _moduleMaps = new Dictionary<Type, Module>(ModuleImpSystem.DesignModuleCount); private static readonly Dictionary<Type, Module> _moduleMaps = new Dictionary<Type, Module>(ModuleImpSystem.DesignModuleCount);
private static GameObject _gameModuleRoot;
#region #region
/// <summary> /// <summary>
/// 获取游戏基础模块。 /// 获取游戏基础模块。
/// </summary> /// </summary>
public static RootModule Base => _base ??= Get<RootModule>(); public static RootModule Base
{
get => _base ??= Get<RootModule>();
private set => _base = value;
}
private static RootModule _base; private static RootModule _base;
/// <summary> /// <summary>
/// 获取调试模块。 /// 获取调试模块。
/// </summary> /// </summary>
public static DebuggerModule Debugger => _debugger ??= Get<DebuggerModule>(); public static DebuggerModule Debugger
{
get => _debugger ??= Get<DebuggerModule>();
private set => _debugger = value;
}
private static DebuggerModule _debugger; private static DebuggerModule _debugger;
@@ -117,7 +128,31 @@ namespace TEngine
{ {
Log.Info("GameModule Active"); Log.Info("GameModule Active");
gameObject.name = $"[{nameof(GameModule)}]"; gameObject.name = $"[{nameof(GameModule)}]";
_gameModuleRoot = gameObject;
DontDestroyOnLoad(gameObject); DontDestroyOnLoad(gameObject);
} }
public static void Shutdown(ShutdownType shutdownType)
{
Log.Info("GameModule Shutdown");
if (_gameModuleRoot != null)
{
Destroy(_gameModuleRoot);
_gameModuleRoot = null;
}
_moduleMaps.Clear();
_base = null;
_debugger = null;
_fsm = null;
_procedure = null;
_objectPool = null;
_resource = null;
_audio = null;
_setting = null;
_ui = null;
_localization = null;
_scene = null;
}
} }
} }

View File

@@ -84,9 +84,10 @@ namespace TEngine
rootModule.Shutdown(); rootModule.Shutdown();
rootModule = null; rootModule = null;
} }
_modules.Clear(); _modules.Clear();
GameModule.Shutdown(shutdownType);
if (shutdownType == ShutdownType.None) if (shutdownType == ShutdownType.None)
{ {
return; return;

View File

@@ -101,6 +101,10 @@ namespace TEngine
_errorLogger = null; _errorLogger = null;
} }
CloseAll(); CloseAll();
if (m_InstanceRoot != null && m_InstanceRoot.parent != null)
{
Destroy(m_InstanceRoot.parent.gameObject);
}
} }
#region #region