0% found this document useful (0 votes)
40 views

System Code

Uploaded by

More Sam
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
40 views

System Code

Uploaded by

More Sam
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 2

using System;

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class TimeManager : MonoBehaviour


{
[SerializeField] private Texture2D skyboxNight;
[SerializeField] private Texture2D skyboxSunrise;
[SerializeField] private Texture2D skyboxDay;
[SerializeField] private Texture2D skyboxSunset;

[SerializeField] private Gradient graddientNightToSunrise;


[SerializeField] private Gradient graddientSunriseToDay;
[SerializeField] private Gradient graddientDayToSunset;
[SerializeField] private Gradient graddientSunsetToNight;

[SerializeField] private Light globalLight;

private int minutes;

public int Minutes


{ get { return minutes; } set { minutes = value; OnMinutesChange(value); } }

private int hours = 5;

public int Hours


{ get { return hours; } set { hours = value; OnHoursChange(value); } }

private int days;

public int Days


{ get { return days; } set { days = value; } }

private float tempSecond;

public void Update()


{
tempSecond += Time.deltaTime;

if (tempSecond >= 1)
{
Minutes += 1;
tempSecond = 0;
}
}

private void OnMinutesChange(int value)


{
globalLight.transform.Rotate(Vector3.up, (1f / (1440f / 4f)) * 360f,
Space.World);
if (value >= 60)
{
Hours++;
minutes = 0;
}
if (Hours >= 24)
{
Hours = 0;
Days++;
}
}

private void OnHoursChange(int value)


{
if (value == 6)
{
StartCoroutine(LerpSkybox(skyboxNight, skyboxSunrise, 10f));
StartCoroutine(LerpLight(graddientNightToSunrise, 10f));
}
else if (value == 8)
{
StartCoroutine(LerpSkybox(skyboxSunrise, skyboxDay, 10f));
StartCoroutine(LerpLight(graddientSunriseToDay, 10f));
}
else if (value == 18)
{
StartCoroutine(LerpSkybox(skyboxDay, skyboxSunset, 10f));
StartCoroutine(LerpLight(graddientDayToSunset, 10f));
}
else if (value == 22)
{
StartCoroutine(LerpSkybox(skyboxSunset, skyboxNight, 10f));
StartCoroutine(LerpLight(graddientSunsetToNight, 10f));
}
}

private IEnumerator LerpSkybox(Texture2D a, Texture2D b, float time)


{
RenderSettings.skybox.SetTexture("_Texture1", a);
RenderSettings.skybox.SetTexture("_Texture2", b);
RenderSettings.skybox.SetFloat("_Blend", 0);
for (float i = 0; i < time; i += Time.deltaTime)
{
RenderSettings.skybox.SetFloat("_Blend", i / time);
yield return null;
}
RenderSettings.skybox.SetTexture("_Texture1", b);
}

private IEnumerator LerpLight(Gradient lightGradient, float time)


{
for (float i = 0; i < time; i += Time.deltaTime)
{
globalLight.color = lightGradient.Evaluate(i / time);
RenderSettings.fogColor = globalLight.color;
yield return null;
}
}
}

You might also like