-
Los Attributes (atributos) le permiten a usted adjuntar información
-
a un método, variable o clase a medida que usted los declara.
-
Esto es útil para tomar código existente
-
y mejorar o cambiarlo de cierta manera.
-
Los atributos en sí varían mucho
-
en sus efectos y usos.
-
Aquí nosotros tenemos una escena de Unity con un orb en ella.
-
El orb tiene un Spin Script adjunto.
-
Tenga en cuenta que la variable speed del script
-
actualmente está configurada a 0.
-
En el Spin Script nosotros podemos ver que
-
primero declaramos una variable int speed
-
y la configuramos en 0.
-
Luego en el método update
-
nosotros giramos el objeto acerca del eje Y
-
basándonos en la speed (velocidad) actual.
-
De esta manera podemos darle a la variable speed
-
cualquier valor que queramos y la velocidad con la que gira
-
el objeto cambiaría como resultado.
-
Esto funciona bien, pero qué si queremos
-
limitar el valor de la variable speed?
-
Podemos escribir código para detectar el valor actual
-
de la variable y prevenirla que se vaya fuera del rango.
-
O podemos adjuntar un atributo a ella.
-
Los atributos son escritos o directamente encima
-
o antes del código que están modificando
-
y por lo general no afecta otras partes del script.
-
En este caso vamos a utilizar
-
el atributo range (rango).
-
La sintaxis para todos los atributos comienza con
-
un corchete cuadrado abierto.
-
Luego para el atributo range
-
escribimos la palabra clave Range seguida por un paréntesis.
-
Dentro del paréntesis escribimos nuestros
-
valores minimos y máximos.
-
Terminamos el atributo con un corchete cuadrado cerrado.
-
Tenga en cuenta que en este caso hemos
-
colocado el atributo arriba de la declaración de la variable.
-
Fácilmente lo pudimos colocar antes también.
-
Si volvemos de vuelta a Unity
-
podemos ver que ya no estamos presentados con
-
la misma propiedad speed en la vista del inspector.
-
Nosotros tenemos ahora un deslizador que va desde nuestros valores
-
mínimos a nuestros valores máximos.
-
Al ejecutar nuestra escena, podemos ver que mover el deslizador
-
directamente cambia la speed (velocidad) de la variable,
-
que devuelta cambia la rotación del objeto.
-
Otro atributo que veremos es el
-
atributo Execute In Edit Mode.
-
Este atributo causa que el script que está
-
adjunto en ejecutarse incluso cuando la escena
-
no está en modo de reproducción.
-
Aquí tenemos otra escena con un orb en ella.
-
Este orb tiene un script llamado
-
Colour Script adjunto.
-
En el Colour Script nosotros configuramos el color del material
-
compartido del objeto a rojo.
-
Si quisiéramos ver este cambio en Unity
-
sin correr nuestra escena podemos aplicar el
-
atributo Execute In Edit Mode a esta.
-
Para hacer esto abrimos un corchete cuadrado
-
ya sea arriba o antes del nombre de nuestra clase.
-
Lo colocamos antes del nombre de la clase
-
ya que el atributo Execute In Edit Mode
-
es aplicado a todo el código en un script,
-
no solamente una parte.
-
Luego escribimos la palabra clave ExecuteInEditMode
-
seguido por un corchete cuadrado que cierra.
-
Este atributo no tiene ningún parámetro
-
y por lo tanto no necesita paréntesis.
-
De vuelta en Unity nosotros podemos ver que nuestro objeto se volvió rojo.
-
Nuestro script fue ejecutado incluso cuando nunca ejecutamos nuestra escena.
-
Vale la pena aclarar que usted necesita tener cuidado
-
con el atributo ExecuteInEditMode.
-
Los scripts normalmente son ejecutados cuando la escena está ejecutándose.
-
Cuando usted para una escena que está en ejecución cualquier cambio
-
hecho al game object en la escena se deshace.
-
Los scripts que son ejecutados en el modo de edición sin embargo
-
serán capaces de modificar, crear y borrar objetos en su escena.
-
Debido a que los cambios no están en el modo de reproducción
-
estos no se van a revertir y van a ser permanentes.
-
Por ejemplo, el orb en esta escena
-
ha sido modificada para que sea roja permanentemente.
-
Si nosotros arrastramos otra orb en nuestra escena
-
también estará roja, ya que el asset orb fue cambiado.
-
Para arreglar esto tendríamos que cambiar
-
manualmente nuestro color negro.
-
Usted puede encontrar más información en
-
la documentación del atributo ExecuteInEditMode enlazada abajo.