Cambiar la iluminación de una escena día o noche en unity3d según la hora local

Esto es lo que aplicado en mi CV ambientado en Diablo 2.

Captura


Demo


Comentarios

Para explicar un poco el siguiente código lo que hace es mirar la hora local y según si es de día (entre 6:00 y 21:00) o de noche (entre 21:00 y 6:00) hace una serie de cosas:

Si es de día...

1. Reproduce un sonido de pájaros (objeto SonidoFondoDia tipo AudioSource)
2. Busca las luces de las antorchas etiquetadas como Fire y las desactiva.

Si es de noche...

1. Reproduce de forma aleatoria entre dos sonidos (objeto SonidoFondoNoche1 y SonidoFondoNoche2 tipo AudioSource)
2. Busca el objeto Day_Light tipo Light y lo desactiva.
 

Código

Este código lo he metido en un script y lo he añadido como componente al personaje aunque lo podría haber puesto en un nuevo Game Object para tenerlo separado y ordenado.

    void Awake(){
        System.DateTime CurrentDate = new System.DateTime();
        CurrentDate = System.DateTime.Now;

        int hora = CurrentDate.Hour;

        // noche
        ifhora > 20 || hora < 7 ){

            AudioSource SonidoFondoNoche;
            int rand = Random.Range(02);

            ifrand == 1 ){

                SonidoFondoNoche = GameObject.Find("SonidoFondoNoche1").GetComponent<AudioSource>();
            
            }else{
                SonidoFondoNoche = GameObject.Find("SonidoFondoNoche2").GetComponent<AudioSource>();
            }

            SonidoFondoNoche.Play(0);

            GameObject.Find("Day_Light").GetComponent<Light>().enabled = false;
        
        // dia
        }else{
            GameObject.Find("SonidoFondoDia").GetComponent<AudioSource>().Play(0);
            GameObject.Find("Day_Light").GetComponent<Light>().enabled = true;

            GameObject[] fires = GameObject.FindGameObjectsWithTag("Fire");

            foreach (GameObject fire in fires)
            {
                fire.SetActive(false);
            }
        }     } 

Chuleta GIT