using System.Collections; using System.Collections.Generic; using UnityEngine; using DevelopEngine; public class MyEnviroManager : MonoSingleton { bool started;//天气系统是否已经启用 string weatherName; ///// ///// 给天气系统绑定目标 ///// ///// ///// //public void AssignAndStart(GameObject player, Camera camera) //{ // EnviroSkyMgr.instance.AssignAndStart(player, camera); //} /// /// 绑定/切换 天气渲染目标 /// /// /// public void ChangeFocus(GameObject player, Camera camera) { EnviroSkyMgr.instance.ChangeFocus(player,camera); } /// /// 设置目标天气 /// 场景更换时注意先为天气系统绑定目标 /// /// 天气名称 public void SetWeather(string weatherName) { this.weatherName = weatherName; if (!started) { InitWeatherAndPlay(); } else { UpdateWeather(); } } //初始化天气效果 并启用 private void InitWeatherAndPlay() { GameObject dirLight = GameObject.Find("Directional Light"); if (dirLight) GameObject.Destroy(dirLight);//删除原有的 方向光源 避免干扰 EnviroSkyMgr.instance.enviroHDInstance.Play(EnviroTime.TimeProgressMode.None); EnviroSkyMgr.instance.useVolumeLighting = false;//关闭体积光 StartCoroutine(WaitWeatherInit()); } /// /// 结束天气系统 /// public void Stop() { EnviroSkyMgr.instance.enviroHDInstance.Stop();//场景结束时 关闭天气系统 } //循环检测 直到天气系统初始化完毕 IEnumerator WaitWeatherInit() { yield return new WaitForEndOfFrame(); if (EnviroSkyMgr.instance.Weather.weatherPresets.Count != 0) UpdateWeather(); else StartCoroutine(WaitWeatherInit()); } private void UpdateWeather() { int weatherIndex = 0; switch (weatherName) { case "晴": break; case "雨": weatherIndex = 3; break; case "雪": weatherIndex = 4; break; case "雷雨": weatherIndex = 5; break; default: break; } EnviroSkyMgr.instance.ChangeWeatherInstant(weatherIndex); } }