如何制作一系列游戏对象

时间:2019-06-04 23:56:40

标签: c# arrays unity3d instantiation

我想知道如何仅使用一张图像来制作一系列游戏对象?例如,我有一个炮弹和一门炮的图片,我想制作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 个答案:

答案 0 :(得分:2)

您将此脚本附加到了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;
        }
    } 
}