Вы прикрепили этот скрипт к игровому объекту Canonball GameObject. Это означает, что каждый раз, когда вы запускаете пушечное ядро, к нему также прикрепляется сценарий и создается новый пушечный ядро, порождающее новый пушечное ядро ... Вы можете увидеть цикл здесь.
Не следует прикреплять это к сборному префекту canonball, а, например, к объекту GameController.
Я не проверял его, но чтобы сделать это, создайте новый GameObject в вашей сцене и прикрепите к нему свой сценарий после удаления его из своего пушечного ядра GameObject..Теперь, если вы нажмете пробел, вы можете создать экземпляр пушечного ядра.
public GameObject[] cannonball;
public int i;
public int x=0;
void Update()
{
if (Input.GetKeyDown(KeyCode.Space)) {
for (i = 0; i < cannonball.Length; i++) {
Instantiate(cannonball[i], new Vector2(x, 0), Quaternion.identity);
x = x + 5;
}
}
}