Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

Ayuda con la configuración del Dropdown del UI

Iniciado por RodrigoVidal, Noviembre 27, 2015, 07:50:54 PM

Tema anterior - Siguiente tema
Hola a todos, por más que lo he buscado no he podido ver ningún post sobre este tema y si creo que va a ser una tonteria pero no lo veo.Estoy creando un menú de configuración para los gráficos, resolución de pantalla, etc, ya que el menu que sale por defecto en cuanto corres la aplicación me parecía un poco pobre.El problema me lo encuentro cuando quiero configurar el componente Dropdown del canvas para que cuan el valor sea 0 haga una cosa, cuando sea 1, otra, etc.No se si la mejor solución sera hacerlo con un switch dentro del evento OnValueChanged(). Como no lo he echo nunca, estoy un poco perdido.Gracias de antemano a todo aquel que me pueda ayudar.

http://docs.unity3d.com/Manual/script-Dropdown.htmlO no has buscado bien, o no te has enterado de nada, porque lo dice bien claro más abajo en el manual. Es un Evento.Puedes evaluar ese evento desde el Inspector, o desde cualquier script...

Hola pioj, lo que tu dices, si que lo había leido pero no me queda del todo claro, por eso he creado el post.

Si utiliza el evento OnValueChanged, le asignas una función y trátalo con un switch. Cuando asignes un valor, saltará el evento y lo podrás tratar.

Noviembre 28, 2015, 11:17:07 AM #4 Ultima modificación: Noviembre 28, 2015, 11:18:16 AM por RodrigoVidal
iRobb, al final no he usado el switch pero me temo que tendré que utilizarlo y/o buscar otro método para poder hacer el panel de configuración de gráficos con una opción para personalizarla.En el script base de los botones del menú hay que utilizar una nueva librería para poder acceder a los componentes del UI:
using UnityEngine.UI;
He creado una variable publica para asignar manualmente el Dropdown que voy a utilizar:
public Dropdown qualitySettingsDropdown;
En la función Start() he añadido un listener cuando el valor del Dropdown cambie y le asigno el valor de calidad que se encuentra en el Dropdown, que por defecto serà el más bajo:
qualitySettingsDropdown.onValueChanged.AddListener(delegate {
            SetQualityLevel();
        });
QualitySettings.SetQualityLevel(qualitySettingsDropdown.value);
No he tenido que usar el switch en este caso ya que los valores del array incluidos en la librería son los mismos valores que hay en el Dropdown. Entonces he creado esta función publica para poder asociarsela en el inspector:
public void SetQualityLevel() {

        QualitySettings.SetQualityLevel(qualitySettingsDropdown.value);
           
    }
El problema que tengo ahora es el querer hacer un tipo de configuración más avanzada por lo que creo que voy a necesitar la sentencia switch para poder acoger el caso 6 ya que del caso 0 al 5 ya vienen predeterminados.Cual crees que es la mejor opción?

A ver, si sólo vas a tener 1-2 condiciones, el IF siempre es más rápido que el switch, eso ya lo sabes.Si por contra, lo has de hacer bastante más complejo, porque intervienen otros factores, pues ya tira de Switch, o de bitflags, o lo que necesites...

Etiquetas: