From 8031f5cfa0c05cfa1f71dc506b3290401e322769 Mon Sep 17 00:00:00 2001 From: NTG Date: Sun, 17 Aug 2025 15:02:04 +0900 Subject: [PATCH] =?UTF-8?q?=ED=94=8C=EB=A0=88=EC=9D=B4=EC=96=B4=20?= =?UTF-8?q?=EC=83=9D=EC=84=B1=20=EC=9C=84=EC=B9=98=20=EC=B4=88=EA=B8=B0?= =?UTF-8?q?=ED=99=94=20=EC=98=A4=EB=A5=98=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Instantiate(prefab)만 사용하면 추후에 position을 바꿔도 다시 프리팹의 포지션으로 돌아오는 현상이 내부적으로 존재함. Instantiate 동시에 매개변수로 position, rotation, parent를 모두 초기화 하는걸 권장함 --- .../So/CreateRestaurantPlayerSo.asset | 3 -- .../So/CreateRestaurantPlayerSo.asset.meta | 8 ----- .../_Addressables/So/RestaurantDataSo.asset | 4 +-- .../So/RestaurantPlayerDataSo.asset | 4 +-- .../Tasks/CreateRestaurantPlayer.cs | 31 ++++++++++--------- .../RestaurantController.cs | 8 ++--- .../DataObjects/RestaurantPlayerDataSo.cs | 2 ++ .../RestaurantData/RestaurantDataSo.cs | 12 +++---- 8 files changed, 33 insertions(+), 39 deletions(-) delete mode 100644 Assets/_DDD/_Addressables/So/CreateRestaurantPlayerSo.asset delete mode 100644 Assets/_DDD/_Addressables/So/CreateRestaurantPlayerSo.asset.meta diff --git a/Assets/_DDD/_Addressables/So/CreateRestaurantPlayerSo.asset b/Assets/_DDD/_Addressables/So/CreateRestaurantPlayerSo.asset deleted file mode 100644 index b3476a9cc..000000000 --- a/Assets/_DDD/_Addressables/So/CreateRestaurantPlayerSo.asset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:69b1b6785e41af191db675f88d2bd8425c39c43154c84a14fe39f47109fb2971 -size 451 diff --git a/Assets/_DDD/_Addressables/So/CreateRestaurantPlayerSo.asset.meta b/Assets/_DDD/_Addressables/So/CreateRestaurantPlayerSo.asset.meta deleted file mode 100644 index abd9dd5aa..000000000 --- a/Assets/_DDD/_Addressables/So/CreateRestaurantPlayerSo.asset.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 47e757b9a170ab649af14c4d7b80ac41 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 11400000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/_DDD/_Addressables/So/RestaurantDataSo.asset b/Assets/_DDD/_Addressables/So/RestaurantDataSo.asset index 39c210c48..86c404522 100644 --- a/Assets/_DDD/_Addressables/So/RestaurantDataSo.asset +++ b/Assets/_DDD/_Addressables/So/RestaurantDataSo.asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2f1d72dffa804297d96e89ddda2031e141e11a4d537e3424dbcd16aae483d89b -size 749 +oid sha256:e3e71453eefb8324f2f75708608b31b51a57ce3fd649c1f1132423c729b0f5ab +size 751 diff --git a/Assets/_DDD/_Addressables/So/RestaurantPlayerDataSo.asset b/Assets/_DDD/_Addressables/So/RestaurantPlayerDataSo.asset index ce6a5112f..bf784e973 100644 --- a/Assets/_DDD/_Addressables/So/RestaurantPlayerDataSo.asset +++ b/Assets/_DDD/_Addressables/So/RestaurantPlayerDataSo.asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ba402a04cf41de0b58a0c0256cd6f32d9abab3a157b790ce9c1095187c6815ed -size 1906 +oid sha256:c5dac55c49e139f8386dcacf4c7fdfd1c3f6c5c8d7a4062a4fa93764e962ef2a +size 2001 diff --git a/Assets/_DDD/_Scripts/RestaurantController/Conrtollers/Tasks/CreateRestaurantPlayer.cs b/Assets/_DDD/_Scripts/RestaurantController/Conrtollers/Tasks/CreateRestaurantPlayer.cs index 3c17ceceb..b6da0e8c4 100644 --- a/Assets/_DDD/_Scripts/RestaurantController/Conrtollers/Tasks/CreateRestaurantPlayer.cs +++ b/Assets/_DDD/_Scripts/RestaurantController/Conrtollers/Tasks/CreateRestaurantPlayer.cs @@ -1,31 +1,34 @@ using System.Threading.Tasks; -using UnityEditor; using UnityEngine; namespace DDD { public class CreateRestaurantPlayer : RestaurantFlowTask { - [SerializeField] - private Vector3 _spawnPosition; + [SerializeField] private Vector3 _spawnPosition = new(0, 0, 15f); + [SerializeField] private Transform _spawnParent; - private GameObject playerPrefab; - - public override async Task ReadyFlowTask() + public override Task ReadyFlowTask() { - playerPrefab = await AssetManager.LoadAsset(CommonConstants.RestaurantPlayer); + return Task.CompletedTask; } public override Task RunFlowTask() { - // TODO : Player exist check + if (PlayerManager.Instance.GetPlayer() != null) + { + return Task.CompletedTask; + } - var player = PrefabUtility.InstantiatePrefab(playerPrefab) as GameObject; - player.transform.position = _spawnPosition; - player.transform.rotation = playerPrefab.transform.rotation; - player.name = CommonConstants.RestaurantPlayer; - CameraManager.Instance.GetCameraGameObject(CameraType.RestaurantBaseCamera) - .SetFollowAndLookAtTarget(player.transform); + var playerPrefab = RestaurantDataSo.instance.PlayerData.PlayerPrefab; + if (playerPrefab == null) + { + Debug.LogError("PlayerPrefab이 설정되지 않았습니다!"); + return Task.CompletedTask; + } + + GameObject player = Instantiate(playerPrefab, _spawnPosition, playerPrefab.transform.rotation, _spawnParent); + player.name = playerPrefab.name; return Task.CompletedTask; } diff --git a/Assets/_DDD/_Scripts/RestaurantController/RestaurantController.cs b/Assets/_DDD/_Scripts/RestaurantController/RestaurantController.cs index a94350b54..56ef4f6e2 100644 --- a/Assets/_DDD/_Scripts/RestaurantController/RestaurantController.cs +++ b/Assets/_DDD/_Scripts/RestaurantController/RestaurantController.cs @@ -30,7 +30,7 @@ public async Task Init() { await LoadData(); await RestaurantDataSo.instance.LoadData(); - InitializeAllFlowControllers(); + await InitializeAllFlowControllers(); } public void PostInit() @@ -42,7 +42,7 @@ private void RegisterFlowHandler() GameFlowManager.Instance.FlowHandlers.Add(this); } - private void InitializeAllFlowControllers() + private async Task InitializeAllFlowControllers() { // Create controllers and initialize them foreach (var restaurantFlowControllerType in RestaurantFlowControllerTypes) @@ -51,12 +51,12 @@ private void InitializeAllFlowControllers() var newController = ScriptableObject.CreateInstance(restaurantFlowControllerType); var newFlowController = newController as RestaurantFlowController; _restaurantFlowControllers.Add(newFlowController); - newFlowController.InitializeController(); + await newFlowController.InitializeController(); } foreach (var restaurantFlowController in _restaurantFlowControllers) { - restaurantFlowController.InitializeState(); + await restaurantFlowController.InitializeState(); } } diff --git a/Assets/_DDD/_Scripts/RestaurantData/DataObjects/RestaurantPlayerDataSo.cs b/Assets/_DDD/_Scripts/RestaurantData/DataObjects/RestaurantPlayerDataSo.cs index ea76e5dc7..3b65efbdc 100644 --- a/Assets/_DDD/_Scripts/RestaurantData/DataObjects/RestaurantPlayerDataSo.cs +++ b/Assets/_DDD/_Scripts/RestaurantData/DataObjects/RestaurantPlayerDataSo.cs @@ -6,6 +6,8 @@ namespace DDD [CreateAssetMenu(fileName = "RestaurantPlayerDataSo", menuName = "RestaurantData/RestaurantPlayerDataSo")] public class RestaurantPlayerDataSo : ScriptableObject { + public GameObject PlayerPrefab; + public bool IsDrawLineDebug = true; public bool IsMoveEnabled = true; diff --git a/Assets/_DDD/_Scripts/RestaurantData/RestaurantDataSo.cs b/Assets/_DDD/_Scripts/RestaurantData/RestaurantDataSo.cs index d2cc6839e..89607427f 100644 --- a/Assets/_DDD/_Scripts/RestaurantData/RestaurantDataSo.cs +++ b/Assets/_DDD/_Scripts/RestaurantData/RestaurantDataSo.cs @@ -10,8 +10,8 @@ namespace DDD public class RestaurantDataSo : ScriptableSingleton { [Header("Asset References")] - [SerializeField] private AssetReference RestaurantPlayerDataSo; - [SerializeField] private AssetReference RestaurantManagementDataSo; + [SerializeField] private AssetReference _restaurantPlayerDataSo; + [SerializeField] private AssetReference _restaurantManagementDataSo; public RestaurantPlayerDataSo PlayerData { get; private set; } public RestaurantManagementDataSo ManagementData { get; private set; } @@ -25,8 +25,8 @@ public async Task LoadData() return; } - var playerHandle = RestaurantPlayerDataSo.LoadAssetAsync(); - var managementHandle = RestaurantManagementDataSo.LoadAssetAsync(); + var playerHandle = _restaurantPlayerDataSo.LoadAssetAsync(); + var managementHandle = _restaurantManagementDataSo.LoadAssetAsync(); await playerHandle.Task; await managementHandle.Task; @@ -40,8 +40,8 @@ private void OnDisable() { if (!_isLoaded) return; - RestaurantPlayerDataSo.ReleaseAsset(); - RestaurantManagementDataSo.ReleaseAsset(); + _restaurantPlayerDataSo.ReleaseAsset(); + _restaurantManagementDataSo.ReleaseAsset(); _isLoaded = false; }