- Home /
Question by
endiflaque · Sep 11, 2020 at 12:15 AM ·
lightsdirectional light
Can't add light to script
Hey, so I'm trying to add a day/night cycle to my game and I can't add a light anything to a script even though i specified that the object I want to change is a type=light and a directional light. I followed a simple 6 minute youtube tutorial here: https://www.youtube.com/watch?v=m9hj9PdO328&t=300s The code is here:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[ExecuteAlways]
public class LightingManager : MonoBehaviour
{
//References
[SerializeField] private Light DirectionalLight;
[SerializeField] private LightingPreset Preset;
//Variables
[SerializeField, Range(0, 24)] private float TimeOfDay;
private void Update()
{
if (Preset == null)
return;
if (Application.isPlaying)
{
TimeOfDay += Time.deltaTime;
TimeOfDay %= 24;
UpdateLighting(TimeOfDay / 24f);
}
}
private void UpdateLighting(float timePercent)
{
RenderSettings.ambientLight = Preset.AmbientColor.Evaluate(timePercent);
RenderSettings.fogColor = Preset.FogColor.Evaluate(timePercent);
if (DirectionalLight != null)
{
DirectionalLight.color = Preset.DirectionalColor.Evaluate(timePercent);
DirectionalLight.transform.localRotation = Quaternion.Euler(new Vector3((timePercent * 360f) - 90f, 170, 0));
}
}
private void OnValidate()
{
if (DirectionalLight != null)
return;
if (RenderSettings.sun != null)
{
DirectionalLight = RenderSettings.sun;
}
else
{
Light[] lights = GameObject.FindObjectsOfType<Light>();
foreach (Light light in lights)
{
if (light.type == LightType.Directional)
{
DirectionalLight = light;
return;
}
}
}
}
}
This also contains some code for the lighting preset:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[System.Serializable]
[CreateAssetMenu(fileName ="Lighting Preset", menuName ="Scriptables/Lighting Preset",order =1)]
public class LightingPreset : ScriptableObject
{
public Gradient AmbientColor;
public Gradient DirectionalColor;
public Gradient FogColor;
void Start()
{
}
void Update()
{
}
}
I'd really appreciate if someone helped with the issue, thanks! P.S. I get no errors in visual studio.
Comment
Your answer
Follow this Question
Related Questions
Light Cookie not in Inspector 0 Answers
Terrain lights up at night (day-night cycle). 2 Answers
The directional lights color visible in shadows 0 Answers
Change Point Light Values through Script 2 Answers
Light effects on collision 1 Answer