Curso de Introducción a Unity: Scripting

Curso de Introducción a Unity: Scripting

Ruth Margarita García López

Ruth Margarita García López

Introducción a los Scripts en Unity: Ciclo de vida y métodos

2/24
Recursos
Transcripción

Aportes 7

Preguntas 3

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

En Unity crearemos un script en lenguaje C# (C Sharp) con el fin de automatizar tareas.

Un script es un asset de código:

“El cual, añadido o creado en el Project se define como una clase (que hereda de MonoBehaviour” por defecto)
- Este script simultáneamente pasa a consolidar un componente SOLO SI lo enlazamos a un GameObject. Lo que en general representa una instanciación del script como clase.

Script Asset (Clase) --> Script Component (Instancia).

Ciclo de vida de un Script:

  • Al instanciar el script como componente de un GameObject, el objeto estará constantemente comunicándole información (estado, actualización de frames, etc.)

MonoBehaviour

“Mensajes” comunes de Unity al script y su orden de ejecución (LifeCycle)
- Awake
○ Sucede antes del Start.
- OnEnable
○ funcionan cuando se activa un GameObject
- Start,:
○ se ejecuta cuando el objeto es activado por primera vez.

Nota: Al darle play al juego se activaran en cada objeto, por uno a la vez, su Awake y OnEnable y recién entonces se activa el Start. Atención a posibles sorpresas con OnEnables.
  • OnMouseDown
    ○ Sucede cuando un Collider del GameObject es clickeado por el Player
  • Update
    ○ Antes de “pintar” cada frame

Al dar STOP al juego se disparan:

  • OnDisable
    ○ También se ejecuta cuando se desactiva o destruye un GameObject.
  • Destroy
    se ejecuta una sola vez: Cuando el objeto es destruido.
    • Reset
      ○ Sólo sucede durante la edición. El GameObject lo llama cuando un componente le es añadido.

Creando un Script: múltiples formas

Ante todo, el orden de las carpetas.
○ Dentro de Assets vamos a crear una carpeta Scripts, para ubicar nuestro script dentro de esta.
1. Podemos hacer click derecho en la ventana de Project
-> Create -> C# Script
Ó
2. Desde dentro de un GameObject, como componente
○ En Inspector click al botón Add Component y en la barra de búsqueda, directamente escribimos el nombre que pondremos a nuestro script. Nos dará la opción NewScript
NOTA: No es necesario explicitar la extensión .cs.
Recordar que el nombre, al ser una Clase, por convención comienza en mayúsculas.
Detalle: por este medio, el script queda creado en la carpeta de proyecto raíz.

##Editar
Doble click sobre el ícono del script -> Este se abrirá en el IDE determinado (VisualStudio). Puedes usar el que prefieras.
- Tip: Desde el IDE puedes abrir tu script seleccionando la carpeta que los contiene a todos(**Scripts**).
- ### HolaMundo
- Llamamos nuestro primer método dentro de la clase **Start ()** {
	**Debug.Log("Hola! desperté");**
	}
- Hasta ahora este script es un Asset, no se inicializará ni ejecutará al dar PLAY, a menos que lo agreguemos como componente de un GameObject. 
Entonces sí veremos el mensaje en consola, una sola vez.
- Si queremos que el mensaje se envíe en cada activación, tenemos que invocarlo dentro del método  **OnEnable() {…}**

NOTA: la consola colapsa los mensajes repetidos por defecto, para preservar visibilidad.
- SPAM!
Si implementaramos el mensaje dentro del método Update () {
Veremos que este se envía una vez por frame, constantemente.

Llamara a Debug.Log(); como 60 veces por segundo.

Juro que pare el video. :v

# Clase #2 - **Introducción a los Scripts en Unity: Ciclo de vida y métodos** ### **¿Qué es un Script?** * Es un **asset** que contiene código en **C#**. * Este código es una clase que hereda de `MonoBehaviour`. * Un script puede ser añadido como un **componente** a un GameObject. * Su principal función es automatizar tareas en Unity. ### **Diferencia entre Asset y Componente** * **Script como Asset**: Es un archivo de código que se puede editar. * **Script como Componente**: Es el script agregado a un GameObject, lo que le permite interactuar con otros componentes del objeto. ### **Ciclo de Vida de un Script** Cuando añadimos un script (asset de código) a un GameObject, el script se comunica mediante **mensajes**. Estos mensajes son métodos que Unity ejecuta en un orden específico. ### **Mensajes Clave que Todo Programador Debe Conocer:** 1. `OnEnable`**,** `OnDisable`: Ocurren al activar o desactivar un GameObject. 2. `Start`**,** `Destroy`: Se ejecutan una sola vez; `Start` cuando el GameObject es activado por primera vez y `Destroy` cuando es destruido. 3. `Awake`: Se ejecuta antes de `Start`. 4. `OnMouseDown`: Se dispara cuando el usuario hace clic en el GameObject. 5. `Reset`: Solo se ejecuta en el editor, no durante la ejecución del juego. ### **Orden de Ejecución de los Mensajes:** 1. **Si el GameObject está activado antes de iniciar el juego**: * Se ejecutan en este orden: `Awake`, `OnEnable`, `Start`. 2. **Durante la ejecución**: * `Update`: Se ejecuta en cada frame, es como un ciclo de espera activa (sin congelar el sistema). * `OnMouseDown`: Se ejecuta cuando el jugador hace clic en el GameObject. 3. **Al detener el juego o desactivar un objeto**: * `OnDisable`: Se ejecuta al desactivar un objeto. * `OnDestroy`: Se ejecuta al detener el juego o destruir un objeto. 4. **En el Editor**: * `Reset`: Se ejecuta únicamente en el editor, no en el juego.
Yo quiero agregar algunos conceptos de programación básica q me ayudaron e interpretar mejor el video! **clase** es un molde o plantilla que define las propiedades (datos) y comportamientos (funciones o métodos) comunes de los objetos que se crean a partir de ella. Es una estructura que agrupa variables y funciones relacionadas, y se utiliza para crear instancias (objetos). Un **método** es una función que está definida dentro de una clase y que describe una acción o comportamiento que puede ejecutar un objeto. Los métodos son responsables de manipular los datos de la clase o realizar alguna acción. **Instanciar** significa crear una copia o un objeto de una clase. `MonoBehaviour` es una clase base proporcionada por Unity que permite que un script se convierta en un componente de un objeto en la escena, y proporciona acceso a muchas funciones y eventos predefinidos del motor, como la actualización del frame, la detección de colisiones y la gestión de entradas. Cuando creas una clase en C# en Unity y deseas que esa clase actúe como un componente de un objeto en el juego (por ejemplo, controlar un personaje, manejar el comportamiento de un enemigo, o gestionar el UI), debes **heredar** de `MonoBehaviour`. Esto significa que tu clase **extiende** la funcionalidad de `MonoBehaviour`, y podrás usar sus métodos especiales (como `Start()`, `Update()`, `Awake()`, etc.) para gestionar la lógica del juego. Al heredar de `MonoBehaviour`, tu clase se convierte en un **script de Unity** que se puede **asociar a un objeto** en la escena como un componente. Si no heredas de `MonoBehaviour`, tu script no podrá utilizar las funcionalidades específicas de Unity, y tampoco podrá ser agregado a un objeto como un componente. ### Creo que tendria que ir a hacer el curso de programacion, pero esto ayuda a entender mejor la clase=)
EXCELENTE

¿Qué es un Script?
En Unity un script es un asset de código, para tener un script usamos C# (C Sharp). C# es un lenguaje de programación usado para desarrolllar aplicaciones web, aplicaciones de escritorio, aplicaciones moviles, juegos, etc. Es un lenguaje de Progrmación Orientado a Objetos.

Un script es una clase que hereda de MonoBehaviour, MonoBahaviour es una clase base de la se derivan muchos scripts de Unity, MonoBehaviour ofrece funciones de ciclo de vida que facilitan el desarrollo con Unity. Un script igual es un componentes, lo podemos agarrar y poner en un objeto. El asset se convierte en un componente cuando lo añadimos a un GameObject.

La clase MonoBehaviour nos da acceso a métodos de eventos, lo que nos permite ejecutar código en función de lo que pasando actualmente en nuestro proyecto. Algunos ejemplos son:

  • OnEnable, OnDisable: Suceden cuando se activa o desactiva un GameObject.
  • Start: Se llama cuando un GameObject comienza a existir (cuando inicia una escena o cuando se instancia un GameObject), Sucede una vez. Es llamado antes del primer frame
  • Destroy: Cuando el objeto es destruido, solo sucede una vez.
  • Awake: Sucede antes del Start.
  • Update: Es llamado en cada frame, una vez antes de pintar cada frame.
  • OnMouseDown: Cuando el GameObject tiene un collider y el usuario hace click sobre el.
  • Reset: Se ejecuta en el editor.

saldra el mensaje del update cada frame hasta que se detenga el juego sksa