0:00:00.539,0:00:02.706 Las funciones Invoke le permiten a usted programar 0:00:02.706,0:00:05.742 un llamado de función después de cierto tiempo de retraso especifico. 0:00:06.543,0:00:08.543 Esto nos permite a nosotros construir un sistema 0:00:08.543,0:00:10.543 útil de llamado de métodos que es sensible al tiempo. 0:00:11.956,0:00:14.827 Aquí nosotros tenemos una escena en Unity con un game object vacío. 0:00:15.629,0:00:18.520 El game object tiene un InvokeScript adjunto a éste. 0:00:19.799,0:00:21.799 En el InvokeScript nosotros tenemos 0:00:21.799,0:00:24.176 un game object público llamado Target. 0:00:24.722,0:00:27.552 También tenemos un método llamado SpawnObject. 0:00:28.094,0:00:30.522 El método SpawnObject simplemente instancia el 0:00:30.522,0:00:34.424 objeto target en la posición (0, 2, 0). 0:00:35.882,0:00:39.808 En el método start nosotros llamamos la función Invoke. 0:00:39.808,0:00:42.439 La función invoke toma 2 parámetros. 0:00:42.439,0:00:45.687 Un string conteniendo el nombre del método que nosotros queremos llamar 0:00:45.687,0:00:48.638 y una cantidad de tiempo para retrasar en segundos. 0:00:50.680,0:00:53.921 Nosotros podemos ver de esta linea de código que después de 2 segundos 0:00:53.921,0:00:56.369 el método SpawnObject será llamado. 0:00:57.740,0:00:59.740 Vale la pena tener en cuenta que solamente los métodos que 0:00:59.740,0:01:01.740 no toman parámetros y tienen un tipo de retorno 0:01:01.740,0:01:04.806 void pueden ser llamados utilizando invoke. 0:01:05.959,0:01:08.682 De vuelta en Unity corramos nuestra escena. 0:01:09.751,0:01:11.849 Nosotros podemos ver que después de 2 segundos un orb 0:01:11.849,0:01:14.506 es instanciado y cae al suelo. 0:01:15.946,0:01:18.871 Esto es útil para llamar métodos de un solo tiempo. 0:01:18.871,0:01:21.360 Pero qué si nosotros quisiéramos llamar un método repetidamente? 0:01:22.038,0:01:23.831 Esto se puede hacer fácilmente utilizando 0:01:23.831,0:01:25.831 la función InvokeRepeating. 0:01:27.789,0:01:29.789 Aquí en nuestra escena nosotros tenemos el mismo 0:01:29.789,0:01:31.555 game object vacío. 0:01:31.555,0:01:33.877 Este tiempo sin embargo hay un 0:01:33.877,0:01:35.877 InvokeRepeatingScript adjunto a este. 0:01:37.544,0:01:39.724 En el InvokeRepeatingScript 0:01:39.724,0:01:41.724 nosotros podemos ver cosas que están expuesto exactamente 0:01:41.724,0:01:44.193 de la misma manera en InvokeScript. 0:01:45.571,0:01:48.668 Nosotros todavía tenemos un game object público llamado Target 0:01:48.668,0:01:51.015 y nosotros todavía tenemos un método SpawnObject. 0:01:51.626,0:01:53.626 El método SpawnObject en este script 0:01:53.626,0:01:55.821 todavía instancia el objeto target 0:01:55.821,0:01:59.247 pero ahora lo hace en una posición X y Z aleatoria. 0:02:01.066,0:02:03.066 En el método start nosotros tenemos una llamada a 0:02:03.066,0:02:04.786 la función InvokeRepeating. 0:02:05.372,0:02:07.372 Esta función toma 3 argumentos. 0:02:07.372,0:02:09.149 Un string que contiene el nombre del método 0:02:09.149,0:02:10.619 que queremos llamar. 0:02:10.619,0:02:13.428 El retraso en segundos antes de que llame el método 0:02:13.428,0:02:15.235 y un retraso en segundos entre cada 0:02:15.235,0:02:17.235 llamada posterior del método. 0:02:18.985,0:02:20.985 Nosotros podemos ver de esta linea de código que 0:02:20.985,0:02:23.316 SpawnObject será llamado después de 2 segundos 0:02:23.316,0:02:25.760 y luego será llamado nuevamente cada 1 segundo. 0:02:27.802,0:02:29.130 Veamos esto en acción. 0:02:30.371,0:02:32.136 En Unity nosotros podemos correr nuestra escena. 0:02:32.704,0:02:36.570 Nosotros podemos ver que después de 2 segundos un orb es instanciado. 0:02:36.570,0:02:38.750 Luego cada 1 segundo 0:02:38.750,0:02:40.750 otro orb es creado. 0:02:42.181,0:02:44.181 Esto continuará infinitamente y va a llenar 0:02:44.181,0:02:46.181 nuestra escena entera con orbs. 0:02:47.778,0:02:49.778 Obviamente es importante conocer 0:02:49.778,0:02:51.778 cómo parar un método que nosotros hemos llamado 0:02:51.778,0:02:53.778 con la función InvokeRepeating. 0:02:55.181,0:02:57.181 Con el fin de parar, todas las instancias 0:02:57.181,0:02:59.181 de un llamado invoked de este script 0:02:59.181,0:03:01.880 nosotros podemos utilizar el método CancelInvoke. 0:03:03.112,0:03:06.049 Si nosotros deseamos solamente parar un Invoke especifico 0:03:06.049,0:03:08.049 que nosotros podemos parse en un string conteniendo el nombre del 0:03:08.049,0:03:10.049 método que deseamos parar.