Как сделать массив игровых объектов - PullRequest
0 голосов
/ 05 июня 2019

Мне было интересно, как я могу создать массив игровых объектов, используя только одно изображение? Например, у меня есть изображение пушечного ядра и пушки, и я хочу сделать 10 пушечных ядер и иметь возможность менять каждый из них в отдельности. У меня есть этот скрипт, прикрепленный к одному объекту игры с пушечным ядром, и я установил длину массива 5 с помощью инспектора.

Я пытался использовать экземпляр, но все, что происходит, это клонировать его навсегда.

public GameObject[] cannonball;
public int i;
public int x=0;
void Start()
{
    for (i = 0; i < cannonball.Length; i++) {
        Instantiate(cannonball[i], new Vector2(x, 0), Quaternion.identity);
        x = x + 5;
    } 
}

Когда я делаю это, по какой-то причине он продолжает клонировать игровые объекты, и я не знаю почему.

1 Ответ

2 голосов
/ 05 июня 2019

Вы прикрепили этот скрипт к игровому объекту 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;
        }
    } 
}
...