87. CLASE GUI (IV)
Button:
static function Button (position : Rect, text : String) : boolean
static function Button (position : Rect, image : Texture) : boolean
static function Button (position : Rect, content : GUIContent) : boolean
static function Button (position : Rect, text : String, style : GUIStyle) : boolean
static function Button (position : Rect, image : Texture, style : GUIStyle) : boolean
static function Button (position : Rect, content : GUIContent, style : GUIStyle) : boolean
Función que crea un botón que, al ser pulsado por un usuario, dispara algún tipo de evento.
Una cosa que puede llamar la atención inicialmente, y que tiene mucho que ver con la manera un poco atípica de usar esta función, es que retorna un booleano que es establecido en true cuando el usuario hace click sobre el botón. De esta suerte, la función devolverá false hasta que se pulse el botón, lo que implica en la práctica que esta función se suele usar tras una declaración if, como enseguida veremos.
Antes detengámonos un momento en los parámetros, que ya nos deberían sonar:
position: Rectangulo en la pantalla a usar para el botón.
text: Texto a mostrar en el botón.
image: Textura/imagen a mostrar en el botón.
content: Texto, imagen y tooltip para este botón.
style: El estilo a usar. Si no se indica, se aplicará el estilo para
botones que tenga el GUISking que se esté usando.
Y ahora es el momento de entender con un ejemplo lo que os comentaba antes sobre la peculiar manera de usar la función button:
var unaTextura : Texture;
function OnGUI() {
if (!unaTextura) {
Debug.LogError("Asigne por favor una textura en el inspector");
return;
}
if (GUI.Button(Rect(10,10,50,50),unaTextura))
Debug.Log("Has hecho click en el botón que tiene una imagen");
if (GUI.Button(Rect(10,70,50,30),"Click"))
Debug.Log("Has hecho click en el botón con texto");
}
Vamos por partes. Salvamos el script y, sin arrastrar ninguna textura a la variable expuesta que nos debería aparecer en el inspector al tener PortaScripts seleccionado, pulsamos play. Nos aparecerá un mensaje de error avisándonos de que debemos arrastrar dicha textura. Es esta una variande de Debug.Log llamada Debug.LogError, que hace que el mensaje aparezca en rojo.
Detenemos el reproductor, arrastramos la textura y volvemos a pulsar play. Observaremos que nos aparecen dos botones, uno con la textura arrastrada por nosotros, otros con el texto indicado, y que al pulsarlos aparecen en pantalla sendos textos.
Lo que personalmente me parece más interesante de todo esto es la manera de utilizar la función:
if (GUI.Button(Rect(10,70,50,30),"Click"))
Pensemos que con esta declaración estamos haciendo dos cosas: primero, al pasarla como condición de if nos aseguramos de que una vez el user clicke el botón y por ende la función Button devuelva true, se ejecutará las declaraciones que se vean afectadas por ese if. Pero, además, previo a devolver true o false, Unity ejecuta la función, y por consiguiente se renderiza el botón en la pantalla.
RepeatButton:
static function RepeatButton (position : Rect, text : String) : boolean
static function RepeatButton (position : Rect, image : Texture) : boolean
static function RepeatButton (position : Rect, content : GUIContent) : boolean
static function RepeatButton (position : Rect, text : String, style : GUIStyle) : boolean
static function RepeatButton (position : Rect, image : Texture, style : GUIStyle) : boolean
static function RepeatButton (position : Rect, content : GUIContent, style : GUIStyle) : boolean
Función que crea un botón que está activo mientras el usuario lo presiona.
TextField:
static function TextField (position : Rect, text : String) : String
static function TextField (position : Rect, text : String, maxLength : int) : String
static function TextField (position : Rect, text : String, style : GUIStyle) : String
static function TextField (position : Rect, text : String, maxLength : int, style : GUIStyle) : String
Crea un campo de texto de una línea donde el usuario puede editar un string. Devuelve un string con el texto editado.
Tiene estos parámetros:
position: Rectángulo en la pantalla a usar para el campo de texto.
text: Texto a editar. El valor de retorno debe ser reasignado de vuelta al
string tal como se enseña en el próximo ejemplo.
maxLength: La longitud máxima del string. Si no se indica, el usuario puede
escribir sin ningún tipo de límite.
style: El estilo a usar. Si no se indica, se aplicará el estilo para
textField que tenga el GUISkin en uso.
Esta función es importante porque permite una mayor interactividad con el usuario que meramente pulsar determinamos botones. Por ello es importante que el texto que dicho usuario introduce se almacene debidamente. Tal como indica el manual de referencia al hablar del parámetro text, la solución ideal es inicializar una variable string con el valor que le damos por defecto, y reutilizar dicha variable para posteriormente contener el string ya modificado y devuelto por la función. En definitiva:
var mensaje : String = "Escribe algo";
function OnGUI () {
mensaje = GUI.TextField (Rect (10, 10, 200, 20), mensaje, 25);
Debug.Log(mensaje);
}
Como veis, la idea es que "mensaje" sirva tanto para contener el string inicial como el modificado. Le he añadido a continuación un Debug.Log para que comprobéis en tiempo real cómo va cambiando el contenido de la variable.
PasswordField:
static function PasswordField (position : Rect, password : String, maskChar : char) : String
static function PasswordField (position : Rect, password : String, maskChar : char, maxLength : int) : String
static function PasswordField (position : Rect, password : String, maskChar : char, style : GUIStyle) : String
static function PasswordField (position : Rect, password : String, maskChar : char, maxLength : int, style : GUIStyle) : String
Crea un campo de texto donde el usuario puede introducir una contraseña. Devuelve un string con la contraseña editada.
Cuenta con los siguientes parámetros:
position: Rectángulo en la pantalla a usar para el campo de texto.
password: Contraseña a editar. El valor de retorno de esta función debe ser
reasignado al string que contenía el valor original.
maskChar: El carácter con el que queremos enmascarar la contraseña.
maxLength: La longitud máxima del string. Si no se indica, el usuario no tendrá
límite para escribir.
style: El estilo a usar. Si no se indica, se usará el estilo para textfield
que tenga el GUISkin que se esté usando.
Podemos apreciar que en definitiva esta función es como la anterior, con la salvedad de que en la presente le añadimos un carácter (tradicionalmente un asterisco) que queremos que aparezca en pantalla cuando el usuario teclee su contraseña.
var miPin : String = "";
function OnGUI () {
miPin = GUI.PasswordField (Rect (10, 10, 200, 20), miPin, "*"[0], 25);
}
Con la tecnología de Blogger.
BUSCADOR
PÁSATE POR EL FORO
API DE UNITY
TEMAS
- 00_INTRODUCCION (3)
- 01_CLASE OBJECT (3)
- 02_ESTRUCTURA VECTOR3 (4)
- 03_CLASE TRANSFORM (7)
- 04_CLASE RIGIDBODY (8)
- 05_CLASE COLLIDER (2)
- 06_CLASE MESHCOLLIDER (1)
- 07_CLASE CHARACTERCONTROLLER (3)
- 08_CLASE RENDERER (2)
- 09_CLASE MESHFILTER (1)
- 10_CLASE JOINT (2)
- 11_CLASE HINGEJOINT (2)
- 12_CLASE SPRINGJOINT (1)
- 13_CLASE CHARACTERJOINT (1)
- 14_CLASE BEHAVIOUR (1)
- 15_CLASE MONOBEHAVIOUR (9)
- 16_CLASE CAMERA (6)
- 17_CLASE LIGHT (3)
- 18_CLASE MATERIAL (3)
- 19_CLASE CUBEMAP (1)
- 20_CLASE RENDERTEXTURE (3)
- 21_CLASE PARTICLEEMITTER (3)
- 22_CLASE MESH (2)
- 23_CLASE GAMEOBJECT (6)
- 24_CLASE SHADER (1)
- 25_CLASE PHYSICMATERIAL (1)
- 26_CLASE COMPONENT (1)
- 27_CLASE GUIELEMENT (1)
- 28_CLASE GUITEXT (2)
- 29_CLASE GUITEXTURE (1)
- 30_CLASE GUI (8)
- 31_CLASE GUILAYOUT (4)
- 32_CLASE TEXTURE (1)
- 33_CLASE TEXTURE2D (2)
- 34_CLASE INPUT (4)
- 35_ESTRUCTURA BOUNDS (1)
- 36_CLASE COLLISION (1)
- 37_CLASE CONTROLLERCOLLIDERHIT (1)
- 38_CLASE DEBUG (1)
- 39_CLASE EVENT (3)
- 40_CLASE GIZMOS (1)
- 41_CLASE LIGHTMAPSETTINGS (1)
- 42_ESTRUCTURA MATHF (3)
- 43_CLASE PHYSICS (2)
- 44_ESTRUCTURA QUATERNION (1)
- 45_CLASE RANDOM (1)
- 46_ESTRUCTURA RAY (1)
- 47_ESTRUCTURA RAYCASTHIT (1)
- 48_ESTRUCTURA RECT (1)
- 49_CLASE RENDERSETTINGS (1)
- 50_CLASE SCREEN (1)
- 51_CLASE TIME (1)
- 52. CLASE YIELDINSTRUCTION (1)
- MONOGRAFICOS (2)
ENTRADAS
-
▼
2011
(127)
-
▼
octubre
(121)
- 116. ESTRUCTURA RAYCASTHIT
- 115. ESTRUCTURA RAY
- 114. CLASE RANDOM
- 113. ESTRUCTURA QUATERNION
- 112. CLASE PHYSICS (y II)
- 111. CLASE PHYSICS (I)
- 110. ESTRUCTURA MATHF (y III)
- 109. ESTRUCTURA MATHF (II)
- 108. ESTRUCTURA MATHF (I)
- 107. CLASE LIGHTMAPSETTINGS
- 106. CLASE GIZMOS
- 105. CLASE EVENT (y III)
- 104. CLASE EVENT (II)
- 107. CLASE EVENT (I)
- 106. CLASE DEBUG
- 105. CLASE CONTROLLERCOLLIDERHIT
- 104. CLASE COLLISION
- 103. ESTRUCTURA BOUNDS
- 102. CLASE INPUT (y IV)
- 101. CLASE INPUT (III)
- 100. CLASE INPUT (II)
- 99. CLASE INPUT (I)
- 98. CLASE TEXTURE2D (y II)
- 97. CLASE TEXTURE2D (I)
- 96. CLASE TEXTURE
- 95. CLASE GUILAYOUT (y IV)
- 94. CLASE GUILAYOUT (III)
- 93. CLASE GUILAYOUT (II)
- 92. CLASE GUILAYOUT (I)
- 91. CLASE GUI (y VIII)
- 90. CLASE GUI ( VII)
- 89. CLASE GUI (VI)
- 88. CLASE GUI (V)
- 87. CLASE GUI (IV)
- 86. CLASE GUI (III)
- 85. CLASE GUI ( II)
- 84. CLASE GUI (I)
- 83. CLASE GUITEXTURE
- 82. CLASE GUITEXT (y II)
- 81. CLASE GUITEXT (I)
- 80. CLASE GUIELEMENT
- 79. CLASE COMPONENT
- 78. CLASE PHYSICMATERIAL
- 77. CLASE SHADER
- 76. CLASE GAMEOBJECT (y VI)
- 75. CLASE GAMEOBJECT (V)
- 74. CLASE GAMEOBJECT (IV)
- 73. CLASE GAMEOBJECT (III)
- 72. CLASE GAMEOBJECT (II)
- 71. CLASE GAMEOBJECT (I)
- 70. CLASE MESH (y II)
- 69. CLASE MESH (I)
- 68. CLASE PARTICLEEMITTER (y III)
- 67. CLASE PARTICLEEMITTER (II)
- 66. CLASE PARTICLEEMITTER (I)
- 65. CLASE RENDERTEXTURE (y III)
- 64. CLASE RENDERTEXTURE (II)
- 63. CLASE RENDERTEXTURE (I)
- 62. CLASE CUBEMAP
- 61. CLASE MATERIAL (y III)
- 60. CLASE MATERIAL (II)
- 59. CLASE MATERIAL (I)
- 58. CLASE LIGHT (y III)
- 57. CLASE LIGHT (II)
- 56. CLASE LIGHT (I)
- 55. CLASE CAMERA (VI)
- 54. CLASE CAMERA (V)
- 53. CLASE CAMERA (IV)
- 52. CLASE CAMERA (III)
- 51. CLASE CAMERA (II)
- 50. CLASE CAMERA (I)
- 49. CLASE MONOBEHAVIOUR (y IX)
- 48. CLASE MONOBEHAVIOUR (VIII)
- 47. CLASE MONOBEHAVIOUR (VII)
- 46. CLASE MONOBEHAVIOUR (VI)
- 45. CLASE MONOBEHAVIOUR (V)
- 44. CLASE MONOBEHAVIOUR (IV)
- 43. CLASE MONOBEHAVIOUR (III)
- 42. CLASE MONOBEHAVIOUR (II)
- 41. CLASE MONOBEHAVIOUR (I)
- 40. CLASE BEHAVIOUR
- 39. CLASE CHARACTERJOINT
- 38. CLASE SPRINGJOINT
- 37. CLASE HINGEJOINT (y II)
- 36. CLASE HINGEJOINT (I)
- 35. CLASE JOINT (y II)
- 34. CLASE JOINT (I)
- 33. CLASE MESHFILTER
- 32. CLASE RENDERER (y II)
- 31. CLASE RENDERER (I)
- 30. CLASE CHARACTERCONTROLLER (y III)
- 29. CLASE CHARACTERCONTROLLER (II)
- 28. CLASE CHARACTERCONTROLLER (I)
- 27. CLASE MESHCOLLIDER
- 26. CLASE COLLIDER (II)
- 25. CLASE COLLIDER (I)
- 24. CLASE RIGIDBODY (y VIII)
- 23. CLASE RIGIDBODY (VII)
- 22. CLASE RIGIDBODY (VI)
- 21. CLASE RIGIDBODY (V)
-
▼
octubre
(121)