- Home /
how to wait for a function on another script to execute to continue spawning objects
So i am spawning in targets and i want to wait for the target to be shot before spawning in another target. currently i have it so that it waits a specific amount of time before spawning in another target. I've tried to reference the script however it is on a prefab instead of an object in the hierarchy. this leads to the timer being stopped when all targets are spawned instead of when the player destroys all the targets. these are the two scripts: public class spawingtarget : MonoBehaviour { public GameObject target; public int yPos; public int zPos; public int targetCount;
void Start()
{
StartCoroutine(TargetSpawn());
}
IEnumerator TargetSpawn()
{
while(targetCount < 20)
{
yPos = Random.Range(6,2);
zPos = Random.Range(-18,-3);
Instantiate(target, new Vector3(14, yPos, zPos), Quaternion.identity);
yield return new WaitForSeconds(1f);
targetCount += 1;
}
GameObject.Find("timer").SendMessage("finish");
}
}
then for the target script: { public float health = 10f;
public void TakeDamage (float Amount)
{
health -= Amount;
if(health <= 0f)
{
Die();
}
}
public void Die()
{
Destroy(gameObject);
}
}
i want it so that instead of the WaitForSeconds(1f); it waits for the die function to take place (where my target will be destroyed) then spawn in another target. any help would be awesome. thanks :D
Answer by logicandchaos · Feb 23, 2021 at 01:50 PM
You can create a bool isFinished and when your method finishes you set it to true, then in your coroutine you have while(!isFinished){}
Your answer
Follow this Question
Related Questions
My SendMessage is problematic [SOLVED] 1 Answer
Reference a function from another object 1 Answer
NullReferenceException: Object reference not set to an instance of an object 1 Answer
Why is this code getting NullReferenceException 2 Answers
How to pass a class without it being a pointer/reference? 1 Answer