WEBVTT

00:00.000 --> 00:00.540
Hola a todos.

00:00.540 --> 00:01.620
Bienvenidos al video.

00:01.620 --> 00:04.680
En este quiero hablar sobre lo básico de C#.

00:04.680 --> 00:11.460
También quiero explicar cómo Visual Studio se conecta con Unity y cómo trabajan juntos para crear videojuegos.

00:13.050 --> 00:17.190
Empezaremos hablando del orden de ejecución.

00:17.190 --> 00:18.720
Voy a explicar qué es, cómo funciona y por qué es importante.

00:21.330 --> 00:26.460
En Visual Studio vemos Start y Update, que son parte del ciclo de vida de Unity, más precisamente de MonoBehaviour.

00:38.850 --> 00:45.390
MonoBehaviour se encarga de llamar a Start y Update. Puedes llamarlos métodos o funciones, es lo mismo.

00:49.140 --> 00:51.690
Hay otros métodos importantes: Awake y FixedUpdate.

01:00.800 --> 01:02.150
Luego está Start, después FixedUpdate y luego Update.

01:07.970 --> 01:10.340
Hay más, pero no te abrumes, solo quédate con la idea general.

01:16.880 --> 01:19.640
Este es el ciclo completo: Awake, OnEnable, Reset, Start, FixedUpdate, etc.

01:29.630 --> 01:35.570
No necesitas memorizar todo, lo aprenderás con la práctica y ni siquiera usaremos todos en este curso.

01:43.520 --> 01:47.960
Vamos a centrarnos en estos cuatro, que son los más importantes.

01:51.380 --> 01:53.540
Awake se llama una vez antes que todo.

01:53.540 --> 01:56.240
Luego Start, después FixedUpdate y luego Update.

01:57.560 --> 02:02.480
Awake y Start solo se llaman una vez. Para ver la diferencia, escribe Debug.Log("Awake fue llamado").

02:09.660 --> 02:11.430
En Start escribe Debug.Log("Start fue llamado").

02:15.520 --> 02:19.420
En FixedUpdate escribe Debug.Log("FixedUpdate fue llamado").

02:26.640 --> 02:29.940
En Update escribe Debug.Log("Update fue llamado").

02:31.620 --> 02:36.060
Si vuelves a Unity y juegas, verás estos mensajes en la consola.

02:41.190 --> 02:42.810
Si no tienes la consola, ve a Ventana > General > Consola.

02:49.830 --> 02:52.290
Ahora ve a modo juego.

02:55.010 --> 02:58.280
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.

03:08.570 --> 03:16.430
FixedUpdate se usa para cálculos físicos, porque se llama un número fijo de veces por segundo (por defecto 50).

04:00.320 --> 04:05.510
Update se llama una vez por frame, así que depende de los FPS del juego.

04:13.970 --> 04:19.610
Si tu juego va a 240 FPS, Update se llama 240 veces por segundo. Si va más lento, se llama menos veces.

04:27.710 --> 04:33.920
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.

04:49.610 --> 04:50.600
¿Qué va en Update?

04:53.780 --> 04:58.850
Por ejemplo, la comprobación de entradas del jugador, colisiones, animaciones, etc.

05:12.380 --> 05:16.910
Update se usa para cosas que deben actualizarse lo más rápido posible. FixedUpdate para cosas que deben ser estables.

05:24.260 --> 05:25.460
A veces hay excepciones, depende del proyecto.

05:34.070 --> 05:40.730
En este juego haremos el movimiento en Update, no en FixedUpdate, porque es un juego simple y no habrá problemas de rendimiento.

06:03.650 --> 06:09.080
En los juegos de plataformas es importante que los controles sean rápidos y responsivos, por eso usamos Update.

06:24.980 --> 06:25.460
Si hay problemas de rendimiento, se puede cambiar después.

06:54.470 --> 06:57.770
Ahora que entendemos esto, hablemos de variables: cómo crearlas, declararlas y para qué sirven.

07:16.620 --> 07:19.710
Si vas al inspector, verás que está vacío, salvo el rigidbody.

07:31.420 --> 07:34.150
Supón que queremos una velocidad para el jugador. Hay que crear una variable.

07:38.050 --> 07:43.120
Cuando creas una variable, decides si es pública o privada. Hablemos de eso al final del video.

07:45.190 --> 07:47.800
Escribe public float speed; y guarda.

07:58.590 --> 08:04.830
Ahora en el inspector aparece un campo speed, donde puedes poner un número para definir la velocidad del personaje.

08:11.640 --> 08:14.640
float sirve para números decimales, como 3.5 o 1.2.

08:16.590 --> 08:21.420
Así se declara una variable: tipo de dato y nombre.

08:23.640 --> 08:27.690
Puedes tener muchas variables, por eso les das nombre.

08:29.820 --> 08:31.830
Por ejemplo, public int coins; para números enteros.

09:11.190 --> 09:14.940
En el inspector solo puedes poner números enteros, útil para monedas, enemigos, etc.

09:36.560 --> 09:38.720
Otra variable: public bool isDead; solo puede ser true o false.

09:57.480 --> 09:59.160
Sirve para controlar el estado del personaje.

10:08.910 --> 10:11.160
Otra variable: public string playerName; para texto.

10:17.170 --> 10:20.020
En el inspector puedes escribir, por ejemplo, Alex.

10:24.070 --> 10:25.660
Estas son las variables simples más usadas.

10:34.510 --> 10:36.610
¿Por qué escribimos public, float, speed? Porque decidimos el acceso, el tipo y el nombre.

10:45.580 --> 10:47.290
Hay muchos tipos más, los usaremos después.

11:02.260 --> 11:03.880
Ahora tenemos cuatro variables públicas. Borra dos.

11:13.800 --> 11:14.880
Haz que una sea privada.

11:18.940 --> 11:20.710
¿Cuál es la diferencia entre speed y coins?

11:23.860 --> 11:26.290
Speed es pública y se ve en el inspector, coins es privada y no se ve.

11:39.080 --> 11:40.550
La variable pública puede ser accedida desde otros scripts, la privada solo desde el mismo script.

11:59.450 --> 12:03.860
En general, es mejor hacer las variables privadas salvo que tengas una buena razón para hacerlas públicas.

12:19.070 --> 12:19.520
Bien.

12:24.380 --> 12:28.220
Hicimos Rigidbody pública para poder asignarla. Si la haces privada, no se ve en el inspector.

12:39.080 --> 12:40.550
Para eso, usa Awake y pon RB = GetComponent<Rigidbody2D>();

13:05.890 --> 13:07.780
Así se asigna automáticamente y no hay que hacerlo manualmente.

13:16.840 --> 13:22.210
En el inspector verás que Rigidbody está asignado igual que antes.

13:23.620 --> 13:24.730
Muy bien.

13:25.590 --> 13:27.600
Ahora borra coins y hablemos de speed.

13:39.420 --> 13:40.770
Hazla privada también.

13:59.390 --> 14:05.600
Si quieres que siga siendo visible en el inspector, pon [SerializeField] antes de la variable.

14:09.330 --> 14:12.000
Así puedes cambiarla en el inspector aunque sea privada.

14:17.430 --> 14:18.900
¿Y por qué no hacer lo mismo con Rigidbody?

14:20.430 --> 14:25.830
Se puede, pero prefiero tener la menor información posible en el inspector. Si se puede asignar en el script, mejor.

14:45.890 --> 14:48.530
Eso es todo por este video. Ya puedes empezar a programar el personaje.

14:57.200 --> 14:58.880
Nos vemos en el siguiente video. ¡Hasta luego!
