From 7d82436c0c1d5a5e853fa2d1c615da54fc3ecaaa Mon Sep 17 00:00:00 2001 From: Jeonghyeon Ha Date: Mon, 1 Sep 2025 19:52:07 +0900 Subject: [PATCH] =?UTF-8?q?=EB=A7=A4=EB=8B=88=EC=A0=80=20=EC=B4=88?= =?UTF-8?q?=EA=B8=B0=ED=99=94=20=EC=88=9C=EC=84=9C=20=EB=B3=B4=EC=9E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../_Scripts/AssetManagement/AssetManager.cs | 17 ++++++++++++++--- .../_DDD/_Scripts/CameraSystem/CameraManager.cs | 9 +++++++-- .../Game/GameController/GameController.cs | 10 ++++++++-- .../_DDD/_Scripts/Game/GameData/DataManager.cs | 14 +++++++++----- .../_Scripts/Game/GameFlow/GameFlowManager.cs | 11 ++++++++--- .../_Scripts/Game/GameFramework/GameManager.cs | 17 +++++++++++++---- .../_Scripts/Game/GameFramework/IManager.cs | 5 +++-- .../Localization/LocalizationManager.cs | 14 +++++++++----- .../Localization/SmartStringVariables.cs | 14 +++++++++++--- .../Game/GameFramework/Scene/SceneManager.cs | 13 +++++++++---- .../_Scripts/Game/GameFramework/TimeManager.cs | 13 +++++++++---- .../_Scripts/Game/GameState/InventoryManager.cs | 13 +++++++++---- Assets/_DDD/_Scripts/Game/GameUi/UiManager.cs | 11 ++++++++--- .../_DDD/_Scripts/InputSystem/InputManager.cs | 14 +++++++++----- .../Controller/RestaurantController.cs | 11 +++++++++-- 15 files changed, 135 insertions(+), 51 deletions(-) diff --git a/Assets/_DDD/_Scripts/AssetManagement/AssetManager.cs b/Assets/_DDD/_Scripts/AssetManagement/AssetManager.cs index 3af080ccc..fd719a38e 100644 --- a/Assets/_DDD/_Scripts/AssetManagement/AssetManager.cs +++ b/Assets/_DDD/_Scripts/AssetManagement/AssetManager.cs @@ -47,14 +47,25 @@ protected override void OnApplicationQuit() ReleaseAllCached(); } - public void PreInit() { } + public void PreInit() + { + } - public async Task Init() + public async Task PreInitAsync() { await Addressables.InitializeAsync().Task; } - public void PostInit() { } + public Task InitAsync() + { + return Task.CompletedTask; + + } + + public Task PostInitAsync() + { + return Task.CompletedTask; + } private string GetSafeAssetName(AssetReference assetReference) { diff --git a/Assets/_DDD/_Scripts/CameraSystem/CameraManager.cs b/Assets/_DDD/_Scripts/CameraSystem/CameraManager.cs index 4e0dfde75..fbd7b8747 100644 --- a/Assets/_DDD/_Scripts/CameraSystem/CameraManager.cs +++ b/Assets/_DDD/_Scripts/CameraSystem/CameraManager.cs @@ -36,14 +36,19 @@ public void PreInit() _cinemachineBrain = GetComponent(); } - public Task Init() + public Task PreInitAsync() { return Task.CompletedTask; } - public void PostInit() + public Task InitAsync() { + return Task.CompletedTask; + } + public Task PostInitAsync() + { + return Task.CompletedTask; } public void RegisterCamera(CameraGameObject cameraGameObject) diff --git a/Assets/_DDD/_Scripts/Game/GameController/GameController.cs b/Assets/_DDD/_Scripts/Game/GameController/GameController.cs index 2b22a55cd..1ef8b62ef 100644 --- a/Assets/_DDD/_Scripts/Game/GameController/GameController.cs +++ b/Assets/_DDD/_Scripts/Game/GameController/GameController.cs @@ -22,15 +22,21 @@ public void PreInit() RegisterFlowHandler(); } - public async Task Init() + public Task PreInitAsync() + { + return Task.CompletedTask; + } + + public async Task InitAsync() { await LoadData(); await GetGameData().LoadData(); await InitializeAllFlowControllers(); } - public void PostInit() + public Task PostInitAsync() { + return Task.CompletedTask; } private void CreateGameState() diff --git a/Assets/_DDD/_Scripts/Game/GameData/DataManager.cs b/Assets/_DDD/_Scripts/Game/GameData/DataManager.cs index 09a3d593d..b9e2a31cd 100644 --- a/Assets/_DDD/_Scripts/Game/GameData/DataManager.cs +++ b/Assets/_DDD/_Scripts/Game/GameData/DataManager.cs @@ -17,20 +17,24 @@ public class DataManager : Singleton, IManager public void PreInit() { - } - public async Task Init() + public async Task PreInitAsync() { await LoadAllGameDataAssets(); await LoadSpriteAtlas(); } - public void PostInit() + public Task InitAsync() { - + return Task.CompletedTask; } - + + public Task PostInitAsync() + { + return Task.CompletedTask; + } + private async Task LoadAllGameDataAssets() { var assets = await AssetManager.Instance.LoadAssetsByLabel(AssetLabel); diff --git a/Assets/_DDD/_Scripts/Game/GameFlow/GameFlowManager.cs b/Assets/_DDD/_Scripts/Game/GameFlow/GameFlowManager.cs index 3184814d7..601f5e8b9 100644 --- a/Assets/_DDD/_Scripts/Game/GameFlow/GameFlowManager.cs +++ b/Assets/_DDD/_Scripts/Game/GameFlow/GameFlowManager.cs @@ -26,12 +26,17 @@ public void PreInit() GameFlowDataSo.CurrentGameState = GameFlowState.None; } - public Task Init() + public Task PreInitAsync() { return Task.CompletedTask; } - public async void PostInit() + public Task InitAsync() + { + return Task.CompletedTask; + } + + public async Task PostInitAsync() { if (IsGameStarted() == false) { @@ -39,7 +44,7 @@ public async void PostInit() } } - private bool IsGameStarted() => GameFlowDataSo.CurrentGameState != GameFlowState.None; + public bool IsGameStarted() => GameFlowDataSo.CurrentGameState != GameFlowState.None; public async Task ChangeFlow(GameFlowState newFlowState) { diff --git a/Assets/_DDD/_Scripts/Game/GameFramework/GameManager.cs b/Assets/_DDD/_Scripts/Game/GameFramework/GameManager.cs index 38950be6a..6d3c43330 100644 --- a/Assets/_DDD/_Scripts/Game/GameFramework/GameManager.cs +++ b/Assets/_DDD/_Scripts/Game/GameFramework/GameManager.cs @@ -57,7 +57,7 @@ private async Task Initialize() } } - // PreInit 단계 실행 + // Start 이전 초기화 보장 foreach (var managerInstance in _managerInstances) { if (managerInstance is IManager manager) @@ -65,22 +65,31 @@ private async Task Initialize() manager.PreInit(); } } + + // PreInit 단계 실행 ( 데이터 준비 등 ) + foreach (var managerInstance in _managerInstances) + { + if (managerInstance is IManager manager) + { + await manager.PreInitAsync(); + } + } // Init 단계 실행 (비동기) foreach (var managerInstance in _managerInstances) { if (managerInstance is IManager manager) { - await manager.Init(); + await manager.InitAsync(); } } - // PostInit 단계 실행 + // PostInit 단계 실행 ( 사실상 게임 시작된 상태 ) foreach (var managerInstance in _managerInstances) { if (managerInstance is IManager manager) { - manager.PostInit(); + await manager.PostInitAsync(); } } } diff --git a/Assets/_DDD/_Scripts/Game/GameFramework/IManager.cs b/Assets/_DDD/_Scripts/Game/GameFramework/IManager.cs index 12a69caba..aa7b35ec7 100644 --- a/Assets/_DDD/_Scripts/Game/GameFramework/IManager.cs +++ b/Assets/_DDD/_Scripts/Game/GameFramework/IManager.cs @@ -5,7 +5,8 @@ namespace DDD public interface IManager { void PreInit(); - Task Init(); - void PostInit(); + Task PreInitAsync(); + Task InitAsync(); + Task PostInitAsync(); } } \ No newline at end of file diff --git a/Assets/_DDD/_Scripts/Game/GameFramework/Localization/LocalizationManager.cs b/Assets/_DDD/_Scripts/Game/GameFramework/Localization/LocalizationManager.cs index 1eef04352..0e9395157 100644 --- a/Assets/_DDD/_Scripts/Game/GameFramework/Localization/LocalizationManager.cs +++ b/Assets/_DDD/_Scripts/Game/GameFramework/Localization/LocalizationManager.cs @@ -18,8 +18,12 @@ public class LocalizationManager : Singleton, IManager private const string Description = "_description"; private readonly List _singleArgBuffer = new(1); - - public async void PreInit() + + public void PreInit() + { + } + + public async Task PreInitAsync() { _localizedCache.Clear(); _currentLocaleCode = GetCurrentLocaleCode(); @@ -55,14 +59,14 @@ public async void PreInit() _isInitialized = true; } - public Task Init() + public Task InitAsync() { return Task.CompletedTask; } - public void PostInit() + public Task PostInitAsync() { - + return Task.CompletedTask; } /// diff --git a/Assets/_DDD/_Scripts/Game/GameFramework/Localization/SmartStringVariables.cs b/Assets/_DDD/_Scripts/Game/GameFramework/Localization/SmartStringVariables.cs index cb58e35e0..71328e739 100644 --- a/Assets/_DDD/_Scripts/Game/GameFramework/Localization/SmartStringVariables.cs +++ b/Assets/_DDD/_Scripts/Game/GameFramework/Localization/SmartStringVariables.cs @@ -51,9 +51,16 @@ private void OnDestroy() EventBus.Unregister(this); } - public void PreInit() { } + public void PreInit() + { + } - public async Task Init() + public Task PreInitAsync() + { + return Task.CompletedTask; + } + + public async Task InitAsync() { Set(_smartStringKeys[SmartStringKey.Day], GetGameLevelState().Level); Set(_smartStringKeys[SmartStringKey.ChecklistFoodCount], GetRestaurantManagementData().ChecklistFoodCount); @@ -66,10 +73,11 @@ public async Task Init() await Task.CompletedTask; } - public void PostInit() + public Task PostInitAsync() { // 도메인 단위 더티 이벤트를 구독하여 필요한 key만 갱신 EventBus.Register(this); + return Task.CompletedTask; } public void HandleEvent(SmartVariablesDirtyEvent evt) diff --git a/Assets/_DDD/_Scripts/Game/GameFramework/Scene/SceneManager.cs b/Assets/_DDD/_Scripts/Game/GameFramework/Scene/SceneManager.cs index b58aa5bdf..9de101834 100644 --- a/Assets/_DDD/_Scripts/Game/GameFramework/Scene/SceneManager.cs +++ b/Assets/_DDD/_Scripts/Game/GameFramework/Scene/SceneManager.cs @@ -30,14 +30,19 @@ public class SceneManager : Singleton, IManager private readonly Dictionary _loadedSceneDatas = new(); private readonly Dictionary _assetKeyToSceneData = new(); - + public void PreInit() { _loadedSceneDatas.Clear(); _assetKeyToSceneData.Clear(); } - public async Task Init() + public Task PreInitAsync() + { + return Task.CompletedTask; + } + + public async Task InitAsync() { var activeScene = UnityEngine.SceneManagement.SceneManager.GetActiveScene(); #if UNITY_EDITOR @@ -64,9 +69,9 @@ public async Task Init() await PreloadAll(); } - public void PostInit() + public Task PostInitAsync() { - + return Task.CompletedTask; } public async Task PreloadAll() diff --git a/Assets/_DDD/_Scripts/Game/GameFramework/TimeManager.cs b/Assets/_DDD/_Scripts/Game/GameFramework/TimeManager.cs index 6ea575988..eed9cf389 100644 --- a/Assets/_DDD/_Scripts/Game/GameFramework/TimeManager.cs +++ b/Assets/_DDD/_Scripts/Game/GameFramework/TimeManager.cs @@ -11,21 +11,26 @@ public class TimeManager : Singleton, IManager, IEventHandler, IManager [SerializeField] private InventoryTestDataSo _inventoryTestDataSo; #endif - + public void PreInit() { - } - public Task Init() + public Task PreInitAsync() { return Task.CompletedTask; } - public void PostInit() + public Task InitAsync() + { + return Task.CompletedTask; + } + + public Task PostInitAsync() { InitializeItemData(); + return Task.CompletedTask; } private void InitializeItemData() diff --git a/Assets/_DDD/_Scripts/Game/GameUi/UiManager.cs b/Assets/_DDD/_Scripts/Game/GameUi/UiManager.cs index c70640413..41dff3171 100644 --- a/Assets/_DDD/_Scripts/Game/GameUi/UiManager.cs +++ b/Assets/_DDD/_Scripts/Game/GameUi/UiManager.cs @@ -29,7 +29,12 @@ public void PreInit() GameFlowManager.Instance.FlowHandlers.Add(this); } - public Task Init() + public Task PreInitAsync() + { + return Task.CompletedTask; + } + + public Task InitAsync() { var flowToUiMapping = UiData.FlowToUiMapping; foreach (var flowToUis in flowToUiMapping) @@ -48,9 +53,9 @@ public Task Init() return Task.CompletedTask; } - public void PostInit() + public Task PostInitAsync() { - + return Task.CompletedTask; } public Task OnReadyNewFlow(GameFlowState newFlowState) diff --git a/Assets/_DDD/_Scripts/InputSystem/InputManager.cs b/Assets/_DDD/_Scripts/InputSystem/InputManager.cs index 4a8f1b851..c6c23274f 100644 --- a/Assets/_DDD/_Scripts/InputSystem/InputManager.cs +++ b/Assets/_DDD/_Scripts/InputSystem/InputManager.cs @@ -51,11 +51,10 @@ public class InputManager : Singleton, IManager public InputActionMaps CurrentInputActionMap { get; private set; } private readonly Dictionary<(InputActionMaps, string), InputAction> _cachedActions = new(); - + public void PreInit() { _currentPlayerInput = GetComponent(); - _cachedActions.Clear(); foreach (var actionMap in _currentPlayerInput.actions.actionMaps) { @@ -68,14 +67,19 @@ public void PreInit() } } - public Task Init() + public Task PreInitAsync() { return Task.CompletedTask; } - public void PostInit() + public Task InitAsync() { - + return Task.CompletedTask; + } + + public Task PostInitAsync() + { + return Task.CompletedTask; } private bool IsNullCurrentPlayerInput() diff --git a/Assets/_DDD/_Scripts/Restaurant/Controller/RestaurantController.cs b/Assets/_DDD/_Scripts/Restaurant/Controller/RestaurantController.cs index 15a6d599b..e9ef73f50 100644 --- a/Assets/_DDD/_Scripts/Restaurant/Controller/RestaurantController.cs +++ b/Assets/_DDD/_Scripts/Restaurant/Controller/RestaurantController.cs @@ -31,20 +31,27 @@ public void PreInit() RegisterFlowHandler(); } - public async Task Init() + public Task PreInitAsync() + { + return Task.CompletedTask; + } + + public async Task InitAsync() { await LoadData(); await GetRestaurantData().LoadData(); await InitializeAllFlowControllers(); } - public void PostInit() + public Task PostInitAsync() { var allInteractables = GetRestaurantState().EnvironmentState.GetAllInteractables(); foreach (var interactable in allInteractables) { } + + return Task.CompletedTask; } private void CreateRestaurantState()