90. CLASE GUI ( VII)









BeginGroup:

static function BeginGroup (position : Rect) : void
static function BeginGroup (position : Rect, text : String) : void
static function BeginGroup (position : Rect, image : Texture) : void
static function BeginGroup (position : Rect, content : GUIContent) : void
static function BeginGroup (position : Rect, style : GUIStyle) : void
static function BeginGroup (position : Rect, text : String, style : GUIStyle) : void
static function BeginGroup (position : Rect, image : Texture, style : GUIStyle) : void
static function BeginGroup (position : Rect, content : GUIContent, style : GUIStyle) : void


Comienza un grupo. Esta función debe emparejarse con una llamada a EndGroup.

Cuando comenzamos un grupo, el sistema de coordenadas para los controles GUI será tal que coincidirá la coordenada (0,0) con la esquna superior izquierda del grupo. Los grupos pueden ser anidados, estando lo hijos agrupados respecto de sus padres.

Esto es muy útil cuando movemos un montón de elementos GUI a lo largo de la pantalla. Un caso de uso común es diseñar nuestros menús para que encajen en un específico tamaño de pantalla, centrando la GUI en pantallas más amplias.

Los distintos prototipos de función usan estos parámetros:


position: Rectángulo en la pantalla a usar para el grupo.
text: Texto a mostrar en el grupo.
image: Textura a mostrar en el grupo.
content: Texto, imagen y tooltip para este grupo. Si el parámetro es
proporcionado, cualquier click de ratón es capturado por el grupo y
si no se proporciona, no se renderiza ingún bacground y los clicks
del ratón son renderizados.
style: El estilo a usar para el background.


Veremos muy claramente la funcionalidad de este método con un ejemplo:


function OnGUI () {

GUI.BeginGroup (new Rect (Screen.width / 2 -200 , Screen.height / 2 - 150, 400,
300));

GUI.Box (new Rect (0,0,400,300), "Este cuadrado está ahora centrado, y dentro del
mismo podemos colocar nuestro menú");

GUI.EndGroup ();
}


Expliquemos páso a paso en qué consiste lo que hemos hecho. Para empezar usamos la función BeginGroup para crear un grupo en un rectángulo que se iniciará en el centro de la pantalla. Si lo ubicáramos en width/2 el rectángulo quedaría desplazado, pues no se estaría teniendo en cuenta en este caso la anchura del propio rectángulo. De esta manera, le hemos de restar al centro de la pantalla la mitad de la anchura del rectángulo, asegurándonos así que queda justo en el centro. Hacemos lo propio con la altura.

Una vez ya tenemos definido para el grupo un rectángulo centrado con unas dimensiones de 400 X 300, ahora para los controles dentro de dicho grupo la esquina superior izquierda del rectángulo pasa a ser la coordenada 0,0. Así, cuando a continuación invocamos una caja con un texto y la ubicamos en las coordenadas 0,0, ésta se nos viene a colocar al inicio del rectángulo del grupo.

No hemos de olvidarnos, por último, que si usamos una función BeginGroup hemos de usar cuando acabemos de diseñar el grupo una función EndGroup obligatoriamente, para indicarle a Unity que las instrucciones referidas al grupo ya se han acabado.


EndGroup:

static function EndGroup () : void


Finaliza un grupo.


BeginScrollView:



static function BeginScrollView (position : Rect, scrollPosition : Vector2, viewRect : Rect) : Vector2

static function BeginScrollView (position : Rect, scrollPosition : Vector2, viewRect : Rect, alwaysShowHorizontal : boolean, alwaysShowVertical : boolean) : Vector2
static function BeginScrollView (position : Rect, scrollPosition : Vector2, viewRect : Rect, horizontalScrollbar : GUIStyle, verticalScrollbar : GUIStyle) : Vector2
static function BeginScrollView (position : Rect, scrollPosition : Vector2, viewRect : Rect, alwaysShowHorizontal : boolean, alwaysShowVertical : boolean, horizontalScrollbar : GUIStyle, verticalScrollbar : GUIStyle) : Vector2


Inicia una vista de desplazamiento (scrollview) dentro de la GUI. Un scrollview nos permite poner una área más pequeña en la pantalla dentro de un área mucho mayor, usando barras de desplazamiento (scrollbars) a los lados.

Esta función devuelve la posición del scroll modificada. Al igual que con otras variables, se recomienda reintroducir en la variable que se le pasa a la función los datos nuevos que ésta devuelve.

Tiene estos parámetros:


position: Rectángulo en la pantalla a usar para el ScrollView.
scrollPosition: La distancia en píxeles que la vista es desplazada en las
direcciones X e Y.
viewRect: El rectángulo usado dentro del scrollview.
alwayShowHorizontal: Parámetro opcional para enseñar siempre el scrollbar
horizontal. Si lo establecemos en falso o no lo aportamos a la
función, sólo se enseñará cuando clientRect sea más ancho que
la posición.
alwayShowVertical: Lo mismo para el scrollbar vertical.
horizontalScrollbar: GUIStyle opcional a usar por el scrollbar horizontal. Si no se
aporta, se usará el estilo horizontalScrollbar del GUISkin que
se esté usando.
verticalScrollbar: Lo mismo para el scrollbar vertical



EndScrollView:

static function EndScrollView () : void


Acaba un scrollview iniciado con una llamada a BeginScrollView.


ScrollTo:


static function ScrollTo (position : Rect) : void

Desplaza todos los scrollviews incluidos para tratar de hacer visible una determinada posición.


Window:



static function Window (id : int, clientRect : Rect, func : WindowFunction, text : String) : Rect

static function Window (id : int, clientRect : Rect, func : WindowFunction, image : Texture) : Rect
static function Window (id : int, clientRect : Rect, func : WindowFunction, content : GUIContent) : Rect
static function Window (id : int, clientRect : Rect, func : WindowFunction, text : String, style : GUIStyle) : Rect
static function Window (id : int, clientRect : Rect, func : WindowFunction, image : Texture, style : GUIStyle) : Rect
static function Window (id : int, clientRect : Rect, func : WindowFunction, title : GUIContent, style : GUIStyle) : Rect


Crea una ventana emergente y devuelve el rectángulo en el que dicha ventana se ubica.

Las ventanas flotan sobre los controles GUI normales,
Windows float above normal GUI controls, y pueden ser opcionalmente arrastrados por los usuarios finales. A diferencia de otros controles, necesitamos pasarles una función separada para los controles GUI para colocarlos dentro de la ventana.

Nota: Si usamos GUILayout (de próxima explicación) para colocar nuestros componentes dentro de la ventana, debemos usar GUILayout.Window.

Parámetros:


id: Una ID única a usar para cada ventana.
clientRect: Rectángulo en la pantalla a usar por el grupo.
func: La función que crea el GUI dentro de la ventana. Esta función debe
tomar un parámetro, que será la ID de la ventana para la que se está
creando la GUI.
text: Texto a mostrar como título para la ventana.
image: Textura que muestra una imagen en la barra del título.
content: Texto, imagen y tooltip para esta ventana.
style: Un estilo opcional a usar por la ventana. Si no se aporta, se usará el
estilo de ventana del GUISkin corriente.


Y vamos con un ejemplo:


var windowRect : Rect = Rect (20, 20, 120, 50);

function OnGUI () {
windowRect = GUI.Window (0, windowRect, CreaMiVentana, "Mi ventana");
}

function CreaMiVentana (windowID : int) {
if (GUI.Button (Rect (10,20,100,20), "Hola mundo"))
print ("Recibí un click");
}


Creamos una ventana con ID 0, que ubicamos en un rectángulo cuyas coordenadas y dimensiones están almacenadas en una variable, variable en la cual almacenaremos el rectángulo retornado por la función. Como tercer parámetro le pasamos una función que es la que crea los controles que irán dentro de la ventana, y por último el título de dicha ventana.

La función que crea los controles toma como parámetro a su vez el primer parámetro de GUI.Window, que es la id de la ventana, y en este caso meramente creamos un botón con un texto, que al ser pulsado imprime un mensaje en plantalla.

POSTED BY UnityScripts
POSTED IN
DISCUSSION 2 Comments

2 Responses to : 90. CLASE GUI ( VII)

  1. Anónimo says:

    Exelente compadre..

Leave a Reply

Con la tecnología de Blogger.