I write this line of code in order to put a limit to spawned objects in the scene but when “powerUpsOnPlatform” hit the maximum value unity stops responding.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PowerUpSpawner : MonoBehaviour
{
[SerializeField] private GameObject[] powerUps;
private GameHandler gameHandler;
private float xBorder = 11.5f;
private float zBorder = 10;
private PlayerController playerController;
public int powerUpsOnPlatform;
void Start()
{
playerController = GameObject.Find("Player").GetComponent<PlayerController>();
gameHandler = GameObject.Find("GameHandler").GetComponent<GameHandler>();
StartCoroutine(PowerSpawner());
}
// Update is called once per frame
void Update()
{
/* if (powerUpsOnPlatform < 3)
{
StartCoroutine(PowerSpawner());
}*/
}
IEnumerator PowerSpawner()
{
while (!gameHandler.gameOver())
{
if (powerUpsOnPlatform < 3)
{
float spawnTime = Random.Range(5, 10);
powerUpsOnPlatform++;
yield return (new WaitForSeconds(spawnTime));
Instantiate(powerUps[0], GenerateRandomSpawnPosition(), Quaternion.identity);
}
}
}
private Vector3 GenerateRandomSpawnPosition()
{
float xBorders;
float zBorders;
xBorders = Random.Range(-xBorder, xBorder);
zBorders = Random.Range(-zBorder, zBorder);
Vector3 spawnPos = new Vector3(xBorders, 0, zBorders);
return spawnPos;
}
public void PowerUpDecreaser()
{
powerUpsOnPlatform--;
}
}