Comunidad orientada al desarrollo de videojuegos

NGUI 3.0.8 nivel intermedio

Hola a todos,

En este tutorial quiero mostraros algunos de los nuevos cambios en la rama 3.x y mas concretamente en la nueva 3.0.8 ya que algunos scripts han pasado a ser deprecated. Hablo mas concretamente del UIAnchor y del UIStretch. Si queréis profundizar un poco mas os dejo el enlace a los 2 videotutoriales sobre la version 2.7, video1 y video2

A partir de ahora ambos scripts deben ser eliminados de vuestros proyectos, por el momento se mantienen por retrocompatibilidad, pero ya es hora de actualizar y disfrutar de las novedades.

Otra de las “grandes” novedades es que por fin el viejo sistema de sendmessage para los eventos de los botones ha pasado a mejor vida. A partir de ahora se usan delegados para todo, el viejo script de buttonmessage ha desaparecido y el nuevo sistema es mucho mas flexible y sobre todo mucho mejor para el rendimiento.

SI os fijais en la imagen, ahora el script uibutton tiene un campo notify dentro de On Click, tal y como haciamos con el viejo script de buttonmessage tan solo tenemos que arrastrar el gameobject que contenga el script que vamos a usar, en la imagen yo tengo mi script en el uiroot, y ahi es donde enlazo el script.

delegado_boton

Acto seguido en el desplegable Method veremos los metodos PUBLICOS que tengamos en el script/clase asociado al notify. Como veis en la imagen yo tengo varias funciones, así que solo tengo que elegir la adecuada para el botón.

Como ya he puesto en mayúsculas, el metido debe ser publico o no saldrá en el desplegable.

elegir_metodo

Tal y como lo tengo aquí, todos los métodos van a ser void, ninguno nos devuelve valor, ni el button, ni el slider, ni el checkbok, nada, todos son void

Metodo_publico

¿Y como accedemos a el valor y como sabemos el botón que se ha tocado?, muy sencillo, ahora cada widget tiene un valor static llamado current, es decir tenemos algo como

UISlider.current

El current nos devolvera el valor del objeto y el objeto que se ha pulsado, por ejemplo y siguiendo con el slider, si queremos saber donde hemos movido el slider y recoger su valor float (recordar que el slider va de 0.0f a 1.0f), es tan sencillo como dentro del metodo poner lo siguiente:

public void SliderActualizado()

{

float miValor = UISlider.current.value;

}

Y con esto ya tenemos nuestro valor. Es decir ahora todos los componentes tienen un valor llamado value que nos devolverá el valor del objeto, un float en el caso del slider, un booleano en el caso de un checkbox, etc, etc.

La siguiente novedad incluida es que por fin se pueden emparentar objetos, antiguamente para tener un botón teníamos un gameobject vacio con los scripts y dentro de ese gameobject teníamos varios sprites o labels. A partir de ahora ya no es necesario, el propio uisprite puede tener el script button y como hijo de ese sprite le podéis poner la label sin ningún tipo de problemas (u otro sprite).

¿Por qué?, porque ahora ya no se usa mas el campo scale de los gameobjects, todos los sprites están a 1,1,1 y a cambio ahora los sprites/widgets tienen un campo llamado Dimensions donde establecemos el tamaño del sprite.

dimensiones_sprite_ngui

Como apunte y para que no os volváis locos, el campo dimensions solo es valido si NO tenemos un ancla definida, en dicho caso es la propia ancla quien decidirá el tamaño del botón según ajustemos sus propiedades.

Para el resto de cosas como las anclas y el stretch os dejo el video donde explico como cambiar y actualizar la escena, Video ngui

,

Leave a Reply