Esperando por n segundos en Unity3D

Conzoco 3 maneras de esperar por n segundos en Unity las cuales te enlisto enseguida:

  1. Usando Time.deltaTime
  2. Usando InvokeRepeating
  3. Usando yield return new WaitForSeconds

Primero empezare describiendote el codigo para esperar n segundos usando la clase Time lo cual seria usando el codigo siguiente.

using UnityEngine;
using System.Collections;

public class ScriptDeltaTime : MonoBehaviour
{
   public GUIText guitext;

   int number=0;

   float secondsCounter=0;
   float secondsToCount=1;

   void Update ()
   {
      secondsCounter += Time.deltaTime;
      if (secondsCounter >= secondsToCount)
      {
         secondsCounter=0;
         number++;
      }
      guitext.text = number.ToString();
   }
}

Y he aqui el codigo necesario para InvokeRepeating.

using UnityEngine;
using System.Collections;

public class ScriptInvoke : MonoBehaviour
{
   public GUIText guitext;

   int number=0;

   void Awake ()
   {
      InvokeRepeating("UsingInvokeRepeat", 1f,    1f);
   }

   void Update ()
   {
      guitext.text = number.ToString();
   }

   void UsingInvokeRepeat()
   {
      number++;
   }
}

Y por ultimo el codigo necesario para el metodo de WaitForSeconds.

using UnityEngine;
using System.Collections;

public class ScriptYield : MonoBehaviour {

   public GUIText guitext;
   int number=0;
   bool couroutineStarted= false;

   void Update ()
   {
      if(!couroutineStarted)
         StartCoroutine(UsingYield(1));

      guitext.text = number.ToString();
   }

   IEnumerator UsingYield(int seconds)
   {
      couroutineStarted = true;

      yield return new WaitForSeconds(seconds);
      number++;

      couroutineStarted = false;
   } 

}

Cabe se├▒alar que en los 3 casos el codigo esta esperando por 1 segundo, para esperar por una cantidad de segundos diferente solo habria que modificar el valor explicito de ‘1’ que se esta dando en cada caso por el valor exacto en segundos que se desee esperar.