ProjectDDD/Assets/_DDD/_Scripts/RestaurantData/RestaurantDataSo.cs
NTG 8031f5cfa0 플레이어 생성 위치 초기화 오류 수정
Instantiate(prefab)만 사용하면 추후에 position을 바꿔도 다시 프리팹의 포지션으로 돌아오는 현상이 내부적으로 존재함.
Instantiate 동시에 매개변수로 position, rotation, parent를 모두 초기화 하는걸 권장함
2025-08-17 15:02:04 +09:00

49 lines
1.5 KiB
C#

using System.Threading.Tasks;
using UnityEditor;
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.ResourceManagement.AsyncOperations;
namespace DDD
{
[CreateAssetMenu(fileName = "RestaurantDataSo", menuName = "RestaurantData/RestaurantDataSo", order = 0)]
public class RestaurantDataSo : ScriptableSingleton<RestaurantDataSo>
{
[Header("Asset References")]
[SerializeField] private AssetReference _restaurantPlayerDataSo;
[SerializeField] private AssetReference _restaurantManagementDataSo;
public RestaurantPlayerDataSo PlayerData { get; private set; }
public RestaurantManagementDataSo ManagementData { get; private set; }
private bool _isLoaded;
public async Task LoadData()
{
if (_isLoaded)
{
return;
}
var playerHandle = _restaurantPlayerDataSo.LoadAssetAsync<RestaurantPlayerDataSo>();
var managementHandle = _restaurantManagementDataSo.LoadAssetAsync<RestaurantManagementDataSo>();
await playerHandle.Task;
await managementHandle.Task;
PlayerData = playerHandle.Result;
ManagementData = managementHandle.Result;
_isLoaded = true;
}
private void OnDisable()
{
if (!_isLoaded) return;
_restaurantPlayerDataSo.ReleaseAsset();
_restaurantManagementDataSo.ReleaseAsset();
_isLoaded = false;
}
}
}