using System; using System.Collections; using System.Collections.Generic; using UnityEngine; public class temp_mat_script : MonoBehaviour { public MeshRenderer uav_lighter_meshrenderer;//无人机灯光渲染器 public Material uav_lighter_mat;//无人机灯光材质 public Shader _uav_lighter_shader; // Start is called before the first frame update void Start() { //if (uav_lighter_meshrenderer != null) // uav_lighter_mat = uav_lighter_meshrenderer.material; } [Space(10), Range(0, 1)] public int use_emission_intensity = 1; public string color_value = "#FF0000"; public Color color; [Range(0, 1000)] public float emission_intensity = 200; [Range(0, 1)] public float exposure_weight = 0.3f; [Range(0,1)] public float metallic = 0; [Range(0, 1)] public float smoothness = 0; [Range(0,100)] public float albedo_affect_emissive; [Range(0,100) ] public float emissive_intensity_unit; // Update is called once per frame void Update() { uav_lighter_meshrenderer.material.SetColor("_BaseColor", color); //uav_lighter_meshrenderer.material.SetFloat("_Metallic", metallic); //uav_lighter_meshrenderer.material.SetFloat("_Smoothness", smoothness); //uav_lighter_meshrenderer.material.SetFloat("_UseEmissiveIntensity", use_emission_intensity); uav_lighter_meshrenderer.material.SetColor("_MColor", color); //uav_lighter_meshrenderer.material.SetFloat("_AlbeoAffectEmissive", albedo_affect_emissive); //uav_lighter_meshrenderer.material.SetFloat("_EmissiveIntensityUnit", emissive_intensity_unit); uav_lighter_meshrenderer.material.SetFloat("_Intensity", emission_intensity); uav_lighter_meshrenderer.material.SetFloat("_ExposureWeight", (1 - exposure_weight)); } [ContextMenu("Light")] public void OpenLighter() { //uav_lighter_mat = new Material(_uav_lighter_shader); var uav_lighter_mat = new Material(Shader.Find("HDRP/Lit")); string _color = color_value; float _intensity = exposure_weight; _intensity = Mathf.Clamp01(_intensity); ColorUtility.TryParseHtmlString(_color, out Color __color); uav_lighter_mat.color = __color; uav_lighter_mat.SetFloat("_UseEmissiveIntensity", 1); uav_lighter_mat.SetColor("_EmissiveColorLDR", __color); uav_lighter_mat.SetFloat("_EmissiveIntensity", 200); uav_lighter_mat.SetFloat("_EmissiveExposureWeight", (1 - _intensity)); uav_lighter_meshrenderer.material = uav_lighter_mat; } [ContextMenu("Close")] public void CloseLighter() { uav_lighter_mat.SetFloat("_EmissiveIntensity", 1); } }