Noticias

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

Control DropDownList para Unity

Iniciado por Ele, Septiembre 13, 2015, 09:30:16 PM

Tema anterior - Siguiente tema
Septiembre 13, 2015, 09:30:16 PM Ultima modificación: Septiembre 13, 2015, 09:32:21 PM por Ele
Desde hace una semana he estado diseñando un menú de opciones para mi juego, como sabemos antes de la llegada de Unity 5.2 no existía un control tipo Dropdown entre el UI de Unity de manera que me había dedicado a diseñarlo. Luego de que el progreso de mi control estaba a un 80% Unity saca su versión 5.2 con el control así que me había apartado un poco del proyecto del mi control.Una noche decidí anexar el control Dropdown de Unity a mi proyecto y el control se comporto excelente, el control realmente hace lo que uno pudiera esperar de un Dropdown control, pero hay una limitación en el control de unity. Ahora imaginen este escenario: estas desarrollando un menú de opciones para tu juego y quieres que haya una opción para configurar los controles de tu jugador, para lograr esto deberemos ser capaz de pasarle un objeto de tipo KeyCode al evento controlador, por ejemplo:Input.GetKeyDown(KeyCode.E)es decir el cada item del dropdown debería ser capaz de almacenar cada KeyCode (KeyCode.A, KeyCode.B, etc...) para pasarselo directamente a Input.GetKeyDown, pero la limitante es que el control de Unity solo permite asignar dos propiedades "texto" y "sprite", aunque si bien es cierto que pudiéramos hacer algún cast del string "texto" al enum esto se complicaría si el objeto que deseáramos asignar no es enum sino una clase mas compleja.Por esto decidí retomar mi diseño original de un componente Dropdown, el cual si implementa una propiedad llamada "value" de tipo object a la cual se le puede asignar cualquier tipo de valores.Para el ejemplo que les comente del listado con los KeyCodes la implementacion seria la siguiente:
DropDownList dpComponent = dropdown.GetComponent<DropDownList>();
dpComponent.source = Enum.GetValues(typeof(KeyCode)).
    Cast<KeyCode>().Select(x => new DropDownListItem()
{
    id = x.ToString(),
    text = x.ToString().CamelBreakup(),
    value = x,
    selected = x==KeyCode.E
}).ToList();
  La propiedad "source" del DropDownList permite definir el listado que se mostrara, cada item es un objeto de tipo DropDownListItemLes dejo el código fuente a continuación: para preguntas o sugerencias no se olviden comentar, espero les sea de utilidad.fuente: https://eleazarcelis.wordpress.com/2015/09/13/control-dropdownlist-para-unity/

Septiembre 13, 2015, 10:08:33 PM #1 Ultima modificación: Septiembre 13, 2015, 10:08:59 PM por iRobb
Si lástima que te lo haya chafado la 5.2

Septiembre 13, 2015, 10:48:27 PM #2 Ultima modificación: Septiembre 13, 2015, 10:50:14 PM por Ele
[quote author=iRobb" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="23556" data-ipsquote-contentcommentid="110115">Si lástima que te lo haya chafado la 5.2[/quote]fíjate que no del todo, como mencione el dropdown de unity no permite asignar un objeto subyacente a cada item, dado que esto era lo que yo necesitaba para asignar un KeyCode, o un objeto Resolution directamente al item para después obtenerlo, opte por terminar mi control, y funciona como lo esperaba. ahora puedo hacer algo como esto:

 
								

Um me gusta. Me lo voy a apuntar tu control.

Etiquetas: