ProjectDDD/Assets/_DDD/_Scripts/GameState/GameState.cs
NTG 6d9e7a7f51 data, state 관리 로직 전부 수정
ScriptableSingleton 모두 삭제
2025-08-18 19:48:36 +09:00

40 lines
1016 B
C#

using System.Threading.Tasks;
using UnityEngine;
using UnityEngine.AddressableAssets;
namespace DDD
{
[CreateAssetMenu(fileName = "GameState", menuName = "GameState/GameState")]
public class GameState : ScriptableObject
{
[SerializeField] private AssetReference _gameLevelState;
public GameLevelState LevelState { get; private set; }
private bool _isLoaded;
private void OnDisable()
{
if (_isLoaded == false) return;
_gameLevelState.ReleaseAsset();
_isLoaded = false;
}
public async Task LoadData()
{
if (_isLoaded)
{
return;
}
var gameLevelStateHandle = _gameLevelState.LoadAssetAsync<GameLevelState>();
await gameLevelStateHandle.Task;
LevelState = gameLevelStateHandle.Result;
Debug.Assert(LevelState != null, "GameLevelState is null");
_isLoaded = true;
}
}
}