using Newtonsoft.Json.Linq; using System.Collections; using System.Collections.Generic; using TMPro; using UnityEngine; using UnityEngine.UI; /// /// 灯光控制 /// public class Control_Light : MonoBehaviour { public static Control_Light Instance; /// /// 控制灯光强度、亮度 /// public Slider Lightbrightness; /// /// 开灯/关灯 /// public Button Open; /// /// 所有灯模型 /// public List LightsModel = new List(); /// /// 灯光强度滑动条 /// private float lightsildervalue; /// /// 开灯还是关灯 默认为开灯 /// private bool Is_Open = true; /// /// 初始发散颜色 /// private Color InitColor = new Color(1, 1,1); public TMP_InputField listenFeild; public Button enter; private void Awake() { Instance = this; } void Start() { Open.onClick.AddListener(() => { Is_Open = !Is_Open; OpenorCloseLight(Is_Open); }); lightsildervalue = Lightbrightness.value; Lightbrightness.onValueChanged.AddListener((value) => { for (int i = 0; i < LightsModel.Count; i++) { if (lightsildervalue > value) { Debug.Log("----"); SetEmissionIntensity(LightsModel[i].GetComponent(), value); LightsModel[i].GetChild(0).GetComponent().intensity = value; } else if (lightsildervalue < value) { Debug.Log("+++++++++"); SetEmissionIntensity(LightsModel[i].GetComponent(), value); LightsModel[i].GetChild(0).GetComponent().intensity = value; } } lightsildervalue = Lightbrightness.value; }); //enter.onClick.AddListener(() => //{ // AudiosContorl(listenFeild.text); //}); } /// /// 语音控制 /// public void AudiosContorl(string str) { if (str.Contains("开灯")) { OpenorCloseLight(true); } else if (str.Contains("关灯")) { OpenorCloseLight(false); } else if (str.Contains("暖光")) { Warmlight(); } else if (str.Contains("冷光")) { Coollight(); } else if (str.Contains("白光")) { Incandescentlight(); } else if (str.Contains("灯光调暗")) { for (int i = 0; i < LightsModel.Count; i++) { Debug.Log("----"); SetEmissionIntensity(LightsModel[i].GetComponent(), 0); LightsModel[i].GetChild(0).GetComponent().intensity = 1; } } else if (str.Contains("灯光调亮")) { for (int i = 0; i < LightsModel.Count; i++) { SetEmissionIntensity(LightsModel[i].GetComponent(), 10); LightsModel[i].GetChild(0).GetComponent().intensity = 2; } } } // 根据强度调整发光 void SetEmissionIntensity(Renderer rend, float intensity) { // 更新材质的发光颜色 rend.material.SetColor("_EmissionColor", new Color(InitColor.r * intensity, InitColor.g * intensity, InitColor.b * intensity)); Debug.Log(rend.material.GetColor("_EmissionColor")); } /// /// 开灯或关灯 /// private void OpenorCloseLight(bool IsOpen) { if (IsOpen) { Open.transform.GetComponentInChildren().text = "关"; for (int i = 0; i < LightsModel.Count; i++) { Material material = LightsModel[i].GetComponent().materials[0]; material.EnableKeyword("_EMISSION"); //material.SetColor("_EmissionColor", Color.HSVToRGB(0, 0, 1)); LightsModel[i].GetChild(0).gameObject.SetActive(true); } } else { Open.transform.GetComponentInChildren().text = "开"; for (int i = 0; i < LightsModel.Count; i++) { Material material = LightsModel[i].GetComponent().materials[0]; material.DisableKeyword("_EMISSION"); //material.SetColor("_EmissionColor", Color.HSVToRGB(5, 5, 1)); LightsModel[i].GetChild(0).gameObject.SetActive(false); } } } /// /// 冷灯光 /// public void Coollight() { InitColor = new Color(0, 0.6145419f, 0.9433962f); for (int i = 0; i < LightsModel.Count; i++) { LightsModel[i].GetChild(0).GetComponent().color = new Color(0, 0.6145419f, 0.9433962f); LightsModel[i].GetComponent().material.SetColor("_EmissionColor", new Color(0, 0.6145419f, 0.9433962f)); } } /// /// 暖灯光 /// public void Warmlight() { InitColor = new Color(1, 0.6831585f, 0); for (int i = 0; i < LightsModel.Count; i++) { LightsModel[i].GetChild(0).GetComponent().color = new Color(1, 0.6831585f, 0); LightsModel[i].GetComponent().material.SetColor("_EmissionColor", new Color(1, 0.6831585f, 0)); } } /// /// 白炽光 /// public void Incandescentlight() { InitColor = new Color(1, 1, 1); for (int i = 0; i < LightsModel.Count; i++) { LightsModel[i].GetChild(0).GetComponent().color = new Color(1, 1, 1); LightsModel[i].GetComponent().material.SetColor("_EmissionColor", new Color(1, 1, 1)); } } }