using System.Collections; using System.Collections.Generic; using UnityEngine; using System; public class WeatherTransform : MonoBehaviour { [SerializeField] Transform m_EffectParent; float checkTimer = 0f; float weatherEndTime = 0f; SFXController weatherEffect; int m_WeatherIndex = -1; int currentMapId { get { return PlayerDatas.Instance.baseData.MapID; } } private void OnEnable() { checkTimer = 0f; CheckAndPlayEffect(); } private void OnDisable() { } private void LateUpdate() { checkTimer += Time.deltaTime; if (checkTimer > 60f) { CheckAndPlayEffect(); checkTimer = 0f; } if (Time.time > weatherEndTime && weatherEffect != null) { SFXPlayUtility.Instance.Release(weatherEffect); weatherEffect = null; } } private void CheckAndPlayEffect() { var weatherConfig = WeatherConfig.Get(currentMapId); if (weatherConfig == null) { m_WeatherIndex = -1; if (weatherEffect != null) { SFXPlayUtility.Instance.Release(weatherEffect); weatherEffect = null; } } else { var index = DateTime.Now.Minute / 5; if (m_WeatherIndex != index) { var effectId = weatherConfig != null ? weatherConfig.EffectIds[index] : 0; if (weatherEffect != null) { SFXPlayUtility.Instance.Release(weatherEffect); weatherEffect = null; } if (effectId != 0) { weatherEffect = SFXPlayUtility.Instance.Play(effectId, m_EffectParent); weatherEndTime = Time.time + weatherConfig.EffectDurings[index] * 0.001f; } } } } }