Hola a todos.
Bienvenidos al video.
En este quiero hablar sobre lo básico de C#.
También quiero explicar cómo Visual Studio se conecta con Unity y cómo trabajan juntos para crear videojuegos.
Empezaremos hablando del orden de ejecución.
Voy a explicar qué es, cómo funciona y por qué es importante.
En Visual Studio vemos Start y Update, que son parte del ciclo de vida de Unity, más precisamente de MonoBehaviour.
MonoBehaviour se encarga de llamar a Start y Update. Puedes llamarlos métodos o funciones, es lo mismo.
Hay otros métodos importantes: Awake y FixedUpdate.
Luego está Start, después FixedUpdate y luego Update.
Hay más, pero no te abrumes, solo quédate con la idea general.
Este es el ciclo completo: Awake, OnEnable, Reset, Start, FixedUpdate, etc.
No necesitas memorizar todo, lo aprenderás con la práctica y ni siquiera usaremos todos en este curso.
Vamos a centrarnos en estos cuatro, que son los más importantes.
Awake se llama una vez antes que todo.
Luego Start, después FixedUpdate y luego Update.
Awake y Start solo se llaman una vez. Para ver la diferencia, escribe Debug.Log("Awake fue llamado").
En Start escribe Debug.Log("Start fue llamado").
En FixedUpdate escribe Debug.Log("FixedUpdate fue llamado").
En Update escribe Debug.Log("Update fue llamado").
Si vuelves a Unity y juegas, verás estos mensajes en la consola.
Si no tienes la consola, ve a Ventana > General > Consola.
Ahora ve a modo juego.
Verás que Awake y Start solo se llaman una vez, FixedUpdate y Update se llaman todo el tiempo, pero Update mucho más seguido.
FixedUpdate se usa para cálculos físicos, porque se llama un número fijo de veces por segundo (por defecto 50).
Update se llama una vez por frame, así que depende de los FPS del juego.
Si tu juego va a 240 FPS, Update se llama 240 veces por segundo. Si va más lento, se llama menos veces.
Si pones física en Update, en una PC lenta el coche irá más lento que en una rápida. Por eso la física va en FixedUpdate.
¿Qué va en Update?
Por ejemplo, la comprobación de entradas del jugador, colisiones, animaciones, etc.
Update se usa para cosas que deben actualizarse lo más rápido posible. FixedUpdate para cosas que deben ser estables.
A veces hay excepciones, depende del proyecto.
En este juego haremos el movimiento en Update, no en FixedUpdate, porque es un juego simple y no habrá problemas de rendimiento.
En los juegos de plataformas es importante que los controles sean rápidos y responsivos, por eso usamos Update.
Si hay problemas de rendimiento, se puede cambiar después.
Ahora que entendemos esto, hablemos de variables: cómo crearlas, declararlas y para qué sirven.
Si vas al inspector, verás que está vacío, salvo el rigidbody.
Supón que queremos una velocidad para el jugador. Hay que crear una variable.
Cuando creas una variable, decides si es pública o privada. Hablemos de eso al final del video.
Escribe public float speed; y guarda.
Ahora en el inspector aparece un campo speed, donde puedes poner un número para definir la velocidad del personaje.
float sirve para números decimales, como 3.5 o 1.2.
Así se declara una variable: tipo de dato y nombre.
Puedes tener muchas variables, por eso les das nombre.
Por ejemplo, public int coins; para números enteros.
En el inspector solo puedes poner números enteros, útil para monedas, enemigos, etc.
Otra variable: public bool isDead; solo puede ser true o false.
Sirve para controlar el estado del personaje.
Otra variable: public string playerName; para texto.
En el inspector puedes escribir, por ejemplo, Alex.
Estas son las variables simples más usadas.
¿Por qué escribimos public, float, speed? Porque decidimos el acceso, el tipo y el nombre.
Hay muchos tipos más, los usaremos después.
Ahora tenemos cuatro variables públicas. Borra dos.
Haz que una sea privada.
¿Cuál es la diferencia entre speed y coins?
Speed es pública y se ve en el inspector, coins es privada y no se ve.
La variable pública puede ser accedida desde otros scripts, la privada solo desde el mismo script.
En general, es mejor hacer las variables privadas salvo que tengas una buena razón para hacerlas públicas.
Bien.
Hicimos Rigidbody pública para poder asignarla. Si la haces privada, no se ve en el inspector.
Para eso, usa Awake y pon RB = GetComponent();
Así se asigna automáticamente y no hay que hacerlo manualmente.
En el inspector verás que Rigidbody está asignado igual que antes.
Muy bien.
Ahora borra coins y hablemos de speed.
Hazla privada también.
Si quieres que siga siendo visible en el inspector, pon [SerializeField] antes de la variable.
Así puedes cambiarla en el inspector aunque sea privada.
¿Y por qué no hacer lo mismo con Rigidbody?
Se puede, pero prefiero tener la menor información posible en el inspector. Si se puede asignar en el script, mejor.
Eso es todo por este video. Ya puedes empezar a programar el personaje.
Nos vemos en el siguiente video. ¡Hasta luego!