using System.Threading.Tasks; using UnityEngine; using UnityEngine.AddressableAssets; namespace DDD { [CreateAssetMenu(fileName = "RestaurantData", menuName = "RestaurantData/RestaurantData", order = 0)] public class RestaurantData : ScriptSingleton { [SerializeField] private AssetReference _restaurantPlayerData; [SerializeField] private AssetReference _restaurantManagementData; public RestaurantPlayerData PlayerData { get; private set; } public RestaurantManagementData ManagementData { get; private set; } private bool _isLoaded; public async Task LoadData() { if (_isLoaded) { return; } var restaurantPlayerDataHandle = _restaurantPlayerData.LoadAssetAsync(); var restaurantManagementDataHandle = _restaurantManagementData.LoadAssetAsync(); await restaurantPlayerDataHandle.Task; await restaurantManagementDataHandle.Task; PlayerData = restaurantPlayerDataHandle.Result; ManagementData = restaurantManagementDataHandle.Result; Debug.Assert(PlayerData != null, "RestaurantPlayerData is null"); Debug.Assert(ManagementData != null, "RestaurantManagementData is null"); _isLoaded = true; } private void OnDisable() { if (_isLoaded == false) return; _restaurantPlayerData.ReleaseAsset(); _restaurantManagementData.ReleaseAsset(); _isLoaded = false; } } }