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;
public Toggle cool;
public Toggle warm;
public Toggle Incandescent;
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);
//});
}
private void Update()
{
if (SelectModel.Instance.region != Region.None && LightsModel.Count < 1)
{
switch (SelectModel.Instance.region)
{
case Region.环境控制:
LightsModel = Furniture_Manager.Instance.FindHomes("环境", "灯");
break;
case Region.设备互联与系统控制:
LightsModel = Furniture_Manager.Instance.FindHomes("互联", "灯");
break;
case Region.智能家电与维护:
LightsModel = Furniture_Manager.Instance.FindHomes("家电", "灯");
break;
}
}
if (Is_Open)
{
IsClick(Is_Open);
}
else
{
IsClick(Is_Open);
}
}
void IsClick(bool isclick)
{
Incandescent.interactable = isclick;
cool.interactable = isclick;
warm.interactable = isclick;
Lightbrightness.interactable = isclick;
}
///
/// 语音控制
///
public void AudiosContorl(string str)
{
if (str.Contains("开灯"))
{
Is_Open = true;
IsClick(Is_Open);
OpenorCloseLight(true);
}
else if (str.Contains("关灯"))
{
Is_Open = false;
IsClick(Is_Open);
OpenorCloseLight(false);
}
else if (str.Contains("暖光"))
{
warm.isOn = true;
Warmlight();
}
else if (str.Contains("冷光"))
{
cool.isOn = true;
Coollight();
}
else if (str.Contains("白光"))
{
Incandescent.isOn = true;
Incandescentlight();
}
else if (str.Contains("灯光调暗"))
{
Lightbrightness.value = 1.5f;
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("灯光调亮"))
{
Lightbrightness.value = 2;
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));
}
}
}