Invoke, Couroutines

Invoke

Invoke för att man kan köra en metod efter en viss tid. Passar bra nÀr man vill att nÄgot ska göras exakt en gÄng.

Tar emot en string och en float – namnet pĂ„ metoden som ska köras och hur lĂ„ngt in i framtiden den ska köras.

void Start()
{
  Invoke("EndGame", 60);
}

void EndGame()
{
  SceneManager.LoadScene(0);
}

Coroutines

Coroutines Àr metoder som körs vid sidan av resten av koden. De kan till exempel anvÀndas ifall man att nÄgot ska ske med jÀmna mellanrum.

En coroutine-metod behöver ha IEnumerator som returtyp och för att "pausa" körningen av den anvÀnds "yield return".

Om man yield-returnar null fortsÀtter metoden köras nÀsta frame. Annars brukar man ofta yield-returna en new WaitForSeconds() med ett antal sekunder angivna som en float mellan parenteserna.

[SerializeField] GameObject enemyPrefab;
[SerializeField] PlayerController player;

void Start()
{
  StartCoroutine(SpawnEnemy());
}

IEnumerator SpawnEnemy()
{
  while(player.IsAlive())
  {
    Instantiate(enemyPrefab);
    yield return new WaitForSeconds(2.5f);
  }
}

Last updated