Timer is not counting down. Staying at original number.
Hello, I'm trying to get an Alien to spawn after 20 seconds, if an Alien doesn't already exist.
The code is:
using UnityEngine; using System.Collections;
public class AlienSpawn : MonoBehaviour {
public GameObject Alien;
public float AlienSpawnTimer = 20f;
private float alienSpawnTimer;
// Use this for initialization
void Start ()
{
alienSpawnTimer = AlienSpawnTimer;
}
void Update()
{
if (Alien == null)
{
alienSpawnTimer -= Time.deltaTime;
}
Debug.Log(alienSpawnTimer);
if(alienSpawnTimer < 0)
{
Instantiate(Alien);
alienSpawnTimer = AlienSpawnTimer;
}
}
}
The problem is that the timer just keeps outputting "20" over and over again.
If anyone could help with this, I would be grateful.
Thanks!
Yes, the Alien is null. At least I'm pretty sure it is.
It is not currently created or active or anything. It is just a prefab in the prefab folder. That's why I'm so confused on this
Answer by Highwalker · May 10, 2016 at 06:32 AM
Okay I see your problem. Try this...
public GameObject Alien;
GameObject ActiveAlien;
public float AlienSpawnTimer = 20f;
private float alienSpawnTimer;
// Use this for initialization
void Start ()
{
alienSpawnTimer = AlienSpawnTimer;
}
void Update()
{
if (ActiveAlien == null)
{
alienSpawnTimer -= Time.deltaTime;
}
Debug.Log(alienSpawnTimer);
if(alienSpawnTimer < 0)
{
GameObject alien = Instantiate(Alien);
ActiveAlien = alien;
alienSpawnTimer = AlienSpawnTimer;
}
}
The problem was that your Alien variable is what you set your prefab to. So it wasn't null, since that's your prefab. Instead, you set a variable for the currently active alien which you set when you instantiate the alien, and check if that is null.
Sorry for responding so late, but it works!
Thank you so much! :D
No problem. Check out some videos on pooling when you have some time. It makes spawning enemies much more efficient and will allow you to have many more aliens on screen.
Good luck on your endeavors. :)
Your answer
Follow this Question
Related Questions
ArgumentException: The prefab you want to instantiate is null. 2 Answers
The thing i want to instantiate is null? 0 Answers
Instantiate ParticleSystem prefab as ParticleSystem returns null. As GameObject returns the prefab 1 Answer
Shoot projectile towards the end of a raycast? 0 Answers
Hello there I have a Instantiate Issue 0 Answers