【问题标题】:How to make an array of game objects如何制作游戏对象数组
【发布时间】:2019-06-04 23:56:40
【问题描述】:

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

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

【问题讨论】:

  • 是的,这是使用统一谢谢!
  • 这个脚本附加到什么样的对象上?
  • 我是统一的 2D 所以只是一个精灵
  • 我很好奇它是在炮弹上,还是在大炮上,还是别的什么。
  • 这个脚本在我的炮弹上。我有一个大炮游戏对象,每次按空格键时,我都希望它发射炮弹。如果我按空格让我们说 3 次,你可以看到 3 个炮弹在屏幕上移动。

标签: c# arrays unity3d instantiation


【解决方案1】:

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

您不应将此附加到 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;
        }
    } 
}

【讨论】:

  • 我该怎么做
  • @Trucing 把脚本放在除了你的预制件之外的任何其他东西上。
  • 好的,我怎样才能通过检查器使每个克隆的对象成为我数组中的图像?
  • 或者如何移动实例化的对象?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-16
  • 1970-01-01
相关资源
最近更新 更多