¿Cómo se integran los comportamientos en los videojuegos mediante scripts?
Cuando jugamos juegos como Witcher o Cult of the Lamp, los personajes y eventos parecen tener una lógica interna que los hace mucho más atractivos. Esto es posible gracias a los scripts, los cuales permiten automatizar tareas y dar vida a comportamientos complejos en los videojuegos.
¿Qué es un script y cuál es su ciclo de vida?
Un script en el contexto del desarrollo de videojuegos es un componente esencial para definir comportamientos dentro del entorno de juego. Es, en esencia, un archivo de código escrito en C#, que se compila en un archivo binario manejado por Unity.
Asset y componente: Los scripts pueden existir como un asset, es decir, un archivo de código en el proyecto, o como un componente que se adiciona a un GameObject.
Comportamiento similar a objetos en OOP: Cuando un script se añade a un GameObject, se convierte en un componente con propiedades y métodos propios, funcionando como una clase e instancia al mismo tiempo.
¿Cómo interactúan los scripts con los GameObjects?
Cuando un script es parte de un GameObject, recibe mensajes constantes que indican varias acciones o cambios de estado, haciendo posible la gestión de sucesos durante el juego. Algunos de los mensajes más relevantes que los programadores deben conocer son:
onEnabled y onDisabled: Envían señales cuando un GameObject se activa o desactiva.
Start y Destroy: Start se ejecuta cuando el objeto es activado por primera vez, mientras que Destroy se usa cuando el objeto es destruido.
Awake: Sucede antes de Start, preparándose para su ejecución.
OnMouseDown: Requiere un collider y se activa cuando el usuario hace clic sobre el GameObject.
Reset: Solamente tiene lugar durante la fase de edición.
¿En qué orden se ejecutan los mensajes en Unity?
El orden de ejecución de los mensajes es crucial para definir el comportamiento y la gestión correcta de los GameObjects en tiempo de ejecución. En general, el ciclo sigue esta secuencia:
Cuando el juego se inicia, y si el GameObject está activado, los mensajes se ejecutan en este orden: Awake, onEnabled, y finalmente Start.
Durante la ejecución del juego, el mensaje Update se ejecuta constantemente antes de que cada frame sea renderizado, lo que se traduce en una serie de acciones ágiles y temporales en el juego.
onMouseDown, un método crucial para interacciones basadas en el usuario, también se ejecuta antes de renderizar un frame siempre que el GameObject sea clicado.
Al detener el juego o cuando un GameObject se destruye, se gestionan los mensajes onDisable y onDestroy en ese orden.
¿Cómo crear y gestionar scripts en Unity?
Existen varios métodos para crear scripts en Unity, cada uno con su propio beneficio para mantener la estructura y organización del proyecto.
Creación directa en el proyecto: Usando la opción "Create" -> "C# Script", se asigna un nombre, creando así un nuevo script.
Directamente como componente de un GameObject: Añadiendo el script desde el GameObject, se configura como un nuevo componente.
Este enfoque permite que los desarrolladores integren interactividad y automatización eficazmente, transformando la lógica escrita en vibrantes comportamientos de juego. A medida que exploras más sobre scripts y C#, recuerda que la práctica constante y la experimentación son clave para una mayor comprensión y habilidad. ¡Sigue aprendiendo y crea experiencias de juego inolvidables!
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.
ScriptAsset(Clase)-->ScriptComponent(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.
##EditarDoble click sobre el ícono del script ->Este se abrirá en el IDEdeterminado(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.
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:
OnEnable,OnDisable: Ocurren al activar o desactivar un GameObject.
Start,Destroy: Se ejecutan una sola vez; Start cuando el GameObject es activado por primera vez y Destroy cuando es destruido.
Awake: Se ejecuta antes de Start.
OnMouseDown: Se dispara cuando el usuario hace clic en el GameObject.
Reset: Solo se ejecuta en el editor, no durante la ejecución del juego.
Orden de Ejecución de los Mensajes:
Si el GameObject está activado antes de iniciar el juego:
Se ejecutan en este orden: Awake, OnEnable, Start.
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.
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.
En el Editor:
Reset: Se ejecuta únicamente en el editor, no en el juego.
Alguien sabe como descargar ese editor de texto Emacs en Windows, me gusta como se ve xd
Llamara a Debug.Log(); como 60 veces por segundo.
Juro que pare el video. :v
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=)
Un objero #D en Unity puede tener más de un Script? O se recomiendoa siempre usar uno?
alguien me podría decir por que razón no me genera el código en la consola si estoy poniendo todo al pie de la letra 😕😕😕
Al darle play en el editor aparecera en tu pestaña de consola.
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.
!Untitled
saldra el mensaje del update cada frame hasta que se detenga el juego sksa