using System.Collections; using System.Collections.Generic; using UnityEngine; [ExecuteInEditMode] public class EnvironmentCom : MonoBehaviour { [Range(0,1)] public float _SkyTime; public Transform _SunTrans; public Color SkyUpColor1; [Range(0,1)] public float SkyUpColor2Hight=0.8f; public Color SkyUpColor2; public Color SkyUpColor2Back; public Color SkyDownColor; public float HorizontalColorLength; [ColorUsage(false, true)] public Color HorizontalColor; [ColorUsage(false, true)] public Color HorizontalColorBack; public float SunSize; [ColorUsage(false, true)] public Color SunColor; [ColorUsage(false, true)] public Color SunGlowColor; #region ID int SkyUpColor1ID; int SkyUpColor2ID; int SkyUpColor2BackID; int SkyUpColor2HightID; int SkyDownColorID; int HorizontalColorID; int HorizontalColorBackID; int HorizontalColorLengthID; int SunDirID; int SunSizeID; int SunColorID; int SunGlowColorID; #endregion private void Awake() { GetKey(); } void Update() { UpdateProperty(); } void GetKey() { SkyUpColor1ID = Shader.PropertyToID("_SkyUpColor1"); SkyUpColor2HightID = Shader.PropertyToID("_SkyUpColor2Hight"); SkyUpColor2ID = Shader.PropertyToID("_SkyUpColor2"); SkyUpColor2BackID = Shader.PropertyToID("_SkyUpColor2Back"); SkyDownColorID = Shader.PropertyToID("_SkyDownColor"); HorizontalColorID = Shader.PropertyToID("_HorizontalColor"); HorizontalColorBackID = Shader.PropertyToID("_HorizontalColorBack"); HorizontalColorLengthID = Shader.PropertyToID("_HorizontalColorLength"); SunDirID = Shader.PropertyToID("_SunDir"); SunSizeID = Shader.PropertyToID("_SunSize"); SunColorID = Shader.PropertyToID("_SunColor"); SunGlowColorID = Shader.PropertyToID("_SunGlowColor"); } void UpdateProperty() { Shader.SetGlobalColor(SkyUpColor1ID,SkyUpColor1); Shader.SetGlobalFloat(SkyUpColor2HightID, SkyUpColor2Hight); Shader.SetGlobalColor(SkyUpColor2ID, SkyUpColor2); Shader.SetGlobalColor(SkyUpColor2BackID, SkyUpColor2Back); Shader.SetGlobalColor(SkyDownColorID, SkyDownColor); Shader.SetGlobalColor(HorizontalColorID, HorizontalColor); Shader.SetGlobalColor(HorizontalColorBackID, HorizontalColorBack); Shader.SetGlobalFloat(HorizontalColorLengthID, HorizontalColorLength); Shader.SetGlobalVector(SunDirID, _SunTrans?-_SunTrans.forward:Vector3.one); Shader.SetGlobalFloat(SunSizeID, SunSize); Shader.SetGlobalColor(SunColorID, SunColor); Shader.SetGlobalColor(SunGlowColorID, SunGlowColor); } }