using System; using AibisDream.Kit; using UnityEngine; using Yarn.Unity; namespace AibisDream { public class EnvironmentManager : Singleton { public TimesOfDay defaultTime; public Weather defaultWeather; private AbsScenePart[] _absSceneParts; public override void OnSingletonInit() { _absSceneParts = GetComponentsInChildren(true); foreach (var part in _absSceneParts) { part.Init(defaultTime, defaultWeather); } } public void SetTimeOfDay(string timeOfDay) { if (!Enum.TryParse(timeOfDay, out var time)) { Debug.Log($"{timeOfDay}是不存在的时间"); return; } foreach (var part in _absSceneParts) { part.OnTimeChange(time); } } public void SetWeather(string weatherType) { if (!Enum.TryParse(weatherType, out var weather)) { Debug.Log($"{weatherType}是不存在的时间"); return; } foreach (var part in _absSceneParts) { part.OnWeatherChange(weather); } } } public static class EnvironmentYarnCommand { [YarnCommand("set_time_of_day")] public static void SetTimeOfDay(string timeOfDay) { EnvironmentManager.Instance.SetTimeOfDay(timeOfDay); } [YarnCommand("set_weather")] public static void SetWeather(string weatherType) { EnvironmentManager.Instance.SetWeather(weatherType); } } }