플레이어 생성 위치 초기화 오류 수정
Instantiate(prefab)만 사용하면 추후에 position을 바꿔도 다시 프리팹의 포지션으로 돌아오는 현상이 내부적으로 존재함. Instantiate 동시에 매개변수로 position, rotation, parent를 모두 초기화 하는걸 권장함
This commit is contained in:
parent
76bb92117f
commit
8031f5cfa0
BIN
Assets/_DDD/_Addressables/So/CreateRestaurantPlayerSo.asset
(Stored with Git LFS)
BIN
Assets/_DDD/_Addressables/So/CreateRestaurantPlayerSo.asset
(Stored with Git LFS)
Binary file not shown.
@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 47e757b9a170ab649af14c4d7b80ac41
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
BIN
Assets/_DDD/_Addressables/So/RestaurantDataSo.asset
(Stored with Git LFS)
BIN
Assets/_DDD/_Addressables/So/RestaurantDataSo.asset
(Stored with Git LFS)
Binary file not shown.
BIN
Assets/_DDD/_Addressables/So/RestaurantPlayerDataSo.asset
(Stored with Git LFS)
BIN
Assets/_DDD/_Addressables/So/RestaurantPlayerDataSo.asset
(Stored with Git LFS)
Binary file not shown.
@ -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<GameObject>(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;
|
||||
}
|
||||
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
|
@ -10,8 +10,8 @@ namespace DDD
|
||||
public class RestaurantDataSo : ScriptableSingleton<RestaurantDataSo>
|
||||
{
|
||||
[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<RestaurantPlayerDataSo>();
|
||||
var managementHandle = RestaurantManagementDataSo.LoadAssetAsync<RestaurantManagementDataSo>();
|
||||
var playerHandle = _restaurantPlayerDataSo.LoadAssetAsync<RestaurantPlayerDataSo>();
|
||||
var managementHandle = _restaurantManagementDataSo.LoadAssetAsync<RestaurantManagementDataSo>();
|
||||
|
||||
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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user