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.