/// <summary>
    /// Se llama antes de que se actualice el primer frame. Fija el valor del
    /// atributo <c>fadeImage</c> con una imagen en negro para el fundido en la
    /// transicion de las escenas. Evita que se destruya al cargar la escena,
    /// manteniendo asi una unica instancia. Ademas, lanza un evento si todos
    /// los juegos estan completos, asi como actualizar las luces de las salas
    /// completadas.
    /// </summary>
    void Start()
    {
        fadeImage = GameObject.Find("FadeImage").GetComponent <Image>();
        SceneManager.sceneLoaded += OnSceneLoaded;

        if (sceneManager == null)
        {
            sceneManager = this;
            DontDestroyOnLoad(this);
        }
        else if (sceneManager != this)
        {
            Destroy(gameObject);
        }

        if (!firstLoad)
        {
            fadeImage.canvasRenderer.SetAlpha(0.0f);
            firstLoad = true;
        }
        else
        {
            updateLights();
        }

        if (GameInfo.AllCompleted() && AllCompleted != null)
        {
            AllCompleted();
        }
    }