diff --git a/Assets/TEngine/Runtime/GameMain.cs b/Assets/TEngine/Runtime/GameMain.cs deleted file mode 100644 index 9b2600f5..00000000 --- a/Assets/TEngine/Runtime/GameMain.cs +++ /dev/null @@ -1,18 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -public class GameMain : MonoBehaviour -{ - // Start is called before the first frame update - void Start() - { - - } - - // Update is called once per frame - void Update() - { - - } -} diff --git a/Assets/TEngine/Runtime/GameModule.cs b/Assets/TEngine/Runtime/GameModule.cs new file mode 100644 index 00000000..d8a93ebb --- /dev/null +++ b/Assets/TEngine/Runtime/GameModule.cs @@ -0,0 +1,94 @@ +using System; +using System.Collections.Generic; +using TEngine; +using UnityEngine; + +/// +/// 游戏模块 +/// +public class GameModule:MonoBehaviour +{ + #region BaseComponents + /// + /// 获取游戏基础组件。 + /// + public static RootComponent Base { get; private set; } + + /// + /// 获取调试组件。 + /// + public static DebuggerComponent Debugger { get; private set; } + + /// + /// 获取有限状态机组件。 + /// + public static FsmComponent Fsm { get; private set; } + + /// + /// 获取对象池组件。 + /// + public static ObjectPoolComponent ObjectPool { get; private set; } + + /// + /// 获取资源组件。 + /// + public static ResourceComponent Resource { get; private set; } + + /// + /// 获取配置组件。 + /// + public static SettingComponent Setting { get; private set; } + + /// + /// 获取界面组件。 + /// + public static UIComponent UI { get; private set; } + + #endregion + + /// + /// 初始化系统框架模块 + /// + public static void InitFrameWorkComponents() + { + Base = Get(); + Debugger = Get(); + Fsm = Get(); + ObjectPool = Get(); + Resource = Get(); + Setting = Get(); + UI = Get(); + } + + public static void InitCustomComponents() + { + + } + + private static readonly Dictionary s_Components = new Dictionary(); + + public static T Get()where T : GameFrameworkComponent + { + Type type = typeof(T); + + if (s_Components.ContainsKey(type)) + { + return s_Components[type] as T; + } + + T component = TEngine.GameEntry.GetComponent(); + + Log.Assert(condition:component != null,$"{typeof(T)} is null"); + + s_Components.Add(type,component); + + return component; + } + + public void Start() + { + Log.Info("GameModule Active"); + InitFrameWorkComponents(); + InitCustomComponents(); + } +} \ No newline at end of file diff --git a/Assets/TEngine/Runtime/GameMain.cs.meta b/Assets/TEngine/Runtime/GameModule.cs.meta similarity index 100% rename from Assets/TEngine/Runtime/GameMain.cs.meta rename to Assets/TEngine/Runtime/GameModule.cs.meta