b8360962
b8360962

Reputation: 33

How to delay start for x seconds?

I've searched around and couldn't quite find the answer. I have two scenes, one with a play button which starts the next scene (the game) and the other scene is the game. Which has a spawner script which spawns random patterns of obsticles. Which can be seen here.

public class Spawner : MonoBehaviour {
public GameObject[] obstaclePatterns;

private float timeBtwSpawn;
public float startTimeBtwSpawn;
public float decreaseTime;
public float minTime = 0.55f;

private void Update()
{
    if (timeBtwSpawn <= 0)
    {
        int rand = Random.Range(0, obstaclePatterns.Length);    
        Instantiate(obstaclePatterns[rand], transform.position, Quaternion.identity);
        timeBtwSpawn = startTimeBtwSpawn;
        if (startTimeBtwSpawn > minTime) {
            startTimeBtwSpawn -= decreaseTime;
        }

    }
    else {
        timeBtwSpawn -= Time.deltaTime;
    }
}}

I would like to after the play button is pressed and the game is started there be a delay for 1 second before the spawner begins spawning. I'm not sure how to do that. Any help would be appreciated.

Upvotes: 0

Views: 98

Answers (3)

Jichael
Jichael

Reputation: 820

You can use Unity's Start function as a coroutine directly.


private bool _canStart;

private IEnumerator Start()
{
    yield return new WaitForSeconds(whatyouwant);
    _canStart = true;
}

private void Update()
{
    if(!_canStart) return;

    whatyouwant
}

Upvotes: 2

Sviatoslav Vovdenko
Sviatoslav Vovdenko

Reputation: 66

You should set timeBtwSpawn before start updating of Spawner:

timeBtwSpawn = 1; // seconds

Upvotes: 0

nkazz
nkazz

Reputation: 560

if you want to have a routine that starts after a specific amount of time since the scene was loaded you can use Time.timeSinceLevelLoad this variable holds the time in seconds since the last level(scene) was loaded So you can either create a script that activates your spawner script or add an additional check to your spawner script

Upvotes: 0

Related Questions