首页 > 解决方案 > 如何制作游戏对象数组

问题描述

我想知道如何仅使用一个图像制作一组游戏对象?例如,我有一张炮弹和炮弹的图片,我想制作 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;
    } 
}

当我这样做时,由于某种原因,它会继续克隆游戏对象,我不知道为什么。

标签: c#arraysunity3dinstantiation

解决方案


您将此脚本附加到 canonball GameObject。这意味着每次你发射炮弹时,它也会附加脚本并产生一个新炮弹产生一个新炮弹......你可以在这里看到循环。

您不应该将其附加到 canonball 预制件上,而应附加到例如 GameController 对象上。

我还没有测试过,但要做到这一点,在你的场景中创建一个新的游戏对象,并在将它从你的炮弹游戏对象中删除后附加你的脚本。现在如果你按下空格,你可以实例化炮弹。

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;
        }
    } 
}

推荐阅读