Está en la página 1de 5

Aprendiendo Unity: Guía de Introducción de Programación Básica

Andrés Hernández
Universidad Militar Nueva Granada

Uso de scripts en Unity

Las secuencias de comando en Unity se logran a traves de la ejecución de scripts simples hechos en
JavaScript, Boo (variación de phyton) o C #. Se pueden utilizar uno o todos los lenguajes de script en un solo
proyecto, no hay restricción para el uso de más de uno. Cabe mencionar, que gran parte de los scripts
encontrados en ejemplos y tutoriales están construidos en Java.

Crear un nuevo script en Unity

A diferencia de otros archivos como mallas o texturas, los archivos de secuencias de comandos se pueden
crear desde Unity. Para crear un nuevo script, realice lo siguiente: Assets-> Create-> JavaScript (o assets->
Create-> C Sharp Script o assets-> Create-> Boo Script) en el menú principal. Esto creará un nuevo script
llamado NewBehaviourScript ubicado en la carpeta seleccionada por el usuario. Si no hay ninguna carpeta
seleccionada, el script se creará la carpeta raíz.

Se puede editar el script haciendo doble clic sobre este desde el visor de proyecto. Esto abrirá Unitron, el
editor de scripts de Unity. Toda la programación se hace en un editor de texto externo como Unitron, y no
en Unity directamente. Para configurar el editor de scripts por defecto, vaya a Unity-> Preferences->
External Script Editor.

Un script vacio luce de esta manera:

función Update () (
)
Adicionandole una funcionalidad especifica como imprimir un mensaje en consola sería:
función Update () (
print ("Hola Mundo");
)

Aplicar secuencia de comandos a objetos del juego


Para aplicar un script a un objeto determinado puede arrastrar el archivo de comandos y soltarlo sobre el
objeto dentro del menú de jerarquías o en Assets -> Scripts -> New Behaviour Script, una vez seleccionado
el objeto.

Manipular objetos

Un print () es una declaración que puede ser muy útil al depurar el script, pero no manipula el objeto al cual
se encuentra atado el script. Añadiendo algo de funcionalidad para transformar el objeto como por ejemplo:

función Update () (
transform.Rotate (0, 5 * Time.deltaTime, 0);
)

Algunos parametros importantes para tener en cuenta son:


1. función Update () () es un contenedor de código que ejecuta se ejecuta en Unity varias veces por
segundo (una vez por frame). Similar al void main de C++
2. transform es una referencia a la clase GameObject de transformación de componentes .
3. Rotate () es una función que figura en el componente de Transform.
4. Los números entre las comas representan los grados de rotación alrededor de cada eje de un espacio
3D: X, Y y Z.
5. Time.deltaTime es un miembro de la clase Tiempo que unifica el movimiento de más de un segundo,
por lo que el cubo gira a la misma velocidad sin importar el número de fotogramas por segundo que se
despliegue en la máquina donde se ejecuta la prueba. Por lo tanto, 5 * Time.deltaTime significa 5
grados por segundo.

Con todo esto en mente, se puede leer este código como "durante todos los fotogramas, gire este
componente GameObject del" Transform "una pequeña cantidad de modo que será igual a cinco grados en
el eje Y cada segundo."

Se puede acceder a un gran número de diferentes componentes de la misma manera que se accedió
a transform. Todos los componentes a los que se puede tener acceso fácilmente se enumeran a
continuación:

Libreria de GameObect

Variables
transform The Transform attached to this GameObject. (null if there is none attached)

rigidbody The Rigidbody attached to this GameObject (Read Only). (null if there is none attached)

camera The Camera attached to this GameObject (Read Only). (null if there is none attached)

light The Light attached to this GameObject (Read Only). (null if there is none attached)

animation The Animation attached to this GameObject (Read Only). (null if there is none attached)

constantForce The ConstantForce attached to this GameObject (Read Only). (null if there is none attached)

renderer The Renderer attached to this GameObject (Read Only). (null if there is none attached)

audio The AudioSource attached to this GameObject (Read Only). (null if there is none attached)

guiText The GUIText attached to this GameObject (Read Only). (null if there is none attached)

networkView The NetworkView attached to this GameObject (Read Only). (null if there is none attached)

guiTexture The GUITexture attached to this GameObject (Read Only). (null if there is none attached)
collider The Collider attached to this GameObject (Read Only). (null if there is none attached)

hingeJoint The HingeJoint attached to this GameObject (Read Only). (null if there is none attached)

particleEmitter The ParticleEmitter attached to this GameObject (Read Only). (null if there is none attached)

layer The layer the game object is in. A layer is in the range [0...32]

active Is the GameObject active? Activates/Deactivates the GameObject.

tag The tag of this game object.

Constructors
GameObject Creates a new game object, named name.

Functions
GetComponent Returns the component of Type type if the game object has one attached, null if it doesn't. You can access
both builtin components or scripts with this function.

GetComponentInChildren Returns the component of Type type in the GameObject or any of its children using depth first search.

GetComponents Returns all components of Type type in the GameObject.

GetComponentsInChildren Returns all components of Type type in the GameObject or any of its children.

SetActiveRecursively Sets the active state of this and all the game objects children to state.

CompareTag Is this game object tagged with tag?

SendMessageUpwards Calls the method named methodName on every MonoBehaviour in this game object and on every ancestor
of the behaviour

SendMessage Calls the method named methodName on every MonoBehaviour in this game object.

BroadcastMessage Calls the method named methodName on every MonoBehaviour in this game object or any of its children.

AddComponent Adds a component class named className to the game object.

SampleAnimation Samples an animation at a given time for any animated properties.

Class Functions
CreatePrimitive Creates a game object with a primitive mesh renderer and appropriate collider.

FindWithTag Returns one active GameObject tagged tag. Returns null if no GameObject was found.

FindGameObjectsWithTag Returns a list of active GameObjects tagged tag. Returns null if no GameObject was found.

Find Finds a game object by name and returns it.

Inherited members
Inherited Variables
name The name of the object.

hideFlags Should the object be hidden, saved with the scene or modifyable by the user?

Inherited Functions
GetInstanceID Returns the instance id of the object.

Inherited Class Functions


operator bool Does the object exist?

Instantiate Clones the object original and returns the clone.

Destroy Removes a gameobject, component or asset.

DestroyImmediate Destroys the object obj immediately. It is strongly recommended to use Destroy instead.

FindObjectsOfType Returns a list of all active loaded objects of Type type.

FindObjectOfType Returns the first active loaded object of Type type.

operator == Compares if two objects refer to the same

operator != Compares if two objects refer to a different object

DontDestroyOnLoad Makes the object target not be destroyed automatically when loading a new scene.

Listado de Librerías

 Animation
 AnimationClip
 AnimationCurve
 AnimationEvent
 AnimationState
 GUITexture
 GUIUtility
 GameObject (Libreria de transformaciones, revisar detalladamente)
 GeometryUtility
 Gizmos
 Graphics

Nota: Para ver el listado completo referirse al manual de scripting de Unity online en :
http://unity3d.com/support/documentation/ScriptReference/GameObject.html

Referentes

http://unity3d.com/support/documentation/ScriptReference.html Guia de Clases y Componentes oficial

http://unityspain.com/soporte/guiadeprogC.html Programación Básica de C#

http://www.unifycommunity.com/wiki/index.php?title=Main_Page Wikia de Scripts