-
Las funciones Invoke le permiten a usted programar
-
un llamado de función después de cierto tiempo de retraso especifico.
-
Esto nos permite a nosotros construir un sistema
-
útil de llamado de métodos que es sensible al tiempo.
-
Aquí nosotros tenemos una escena en Unity con un game object vacío.
-
El game object tiene un InvokeScript adjunto a éste.
-
En el InvokeScript nosotros tenemos
-
un game object público llamado Target.
-
También tenemos un método llamado SpawnObject.
-
El método SpawnObject simplemente instancia el
-
objeto target en la posición (0, 2, 0).
-
En el método start nosotros llamamos la función Invoke.
-
La función invoke toma 2 parámetros.
-
Un string conteniendo el nombre del método que nosotros queremos llamar
-
y una cantidad de tiempo para retrasar en segundos.
-
Nosotros podemos ver de esta linea de código que después de 2 segundos
-
el método SpawnObject será llamado.
-
Vale la pena tener en cuenta que solamente los métodos que
-
no toman parámetros y tienen un tipo de retorno
-
void pueden ser llamados utilizando invoke.
-
De vuelta en Unity corramos nuestra escena.
-
Nosotros podemos ver que después de 2 segundos un orb
-
es instanciado y cae al suelo.
-
Esto es útil para llamar métodos de un solo tiempo.
-
Pero qué si nosotros quisiéramos llamar un método repetidamente?
-
Esto se puede hacer fácilmente utilizando
-
la función InvokeRepeating.
-
Aquí en nuestra escena nosotros tenemos el mismo
-
game object vacío.
-
Este tiempo sin embargo hay un
-
InvokeRepeatingScript adjunto a este.
-
En el InvokeRepeatingScript
-
nosotros podemos ver cosas que están expuesto exactamente
-
de la misma manera en InvokeScript.
-
Nosotros todavía tenemos un game object público llamado Target
-
y nosotros todavía tenemos un método SpawnObject.
-
El método SpawnObject en este script
-
todavía instancia el objeto target
-
pero ahora lo hace en una posición X y Z aleatoria.
-
En el método start nosotros tenemos una llamada a
-
la función InvokeRepeating.
-
Esta función toma 3 argumentos.
-
Un string que contiene el nombre del método
-
que queremos llamar.
-
El retraso en segundos antes de que llame el método
-
y un retraso en segundos entre cada
-
llamada posterior del método.
-
Nosotros podemos ver de esta linea de código que
-
SpawnObject será llamado después de 2 segundos
-
y luego será llamado nuevamente cada 1 segundo.
-
Veamos esto en acción.
-
En Unity nosotros podemos correr nuestra escena.
-
Nosotros podemos ver que después de 2 segundos un orb es instanciado.
-
Luego cada 1 segundo
-
otro orb es creado.
-
Esto continuará infinitamente y va a llenar
-
nuestra escena entera con orbs.
-
Obviamente es importante conocer
-
cómo parar un método que nosotros hemos llamado
-
con la función InvokeRepeating.
-
Con el fin de parar, todas las instancias
-
de un llamado invoked de este script
-
nosotros podemos utilizar el método CancelInvoke.
-
Si nosotros deseamos solamente parar un Invoke especifico
-
que nosotros podemos parse en un string conteniendo el nombre del
-
método que deseamos parar.