我正在尝试以随机模式生成多维数据集。
首先,将多维数据集生成到世界中。然后生成一个随机数。此数字决定在哪个位置生成下一个多维数据集。我们称它为cube1生成多维数据集1之后,多维数据集2应该使用多维数据集1的位置进行生成,但仍使用原始多维数据集的位置。
我不明白为什么。
我已经尝试过使用Debug.Log来查看不同的位置,但是无论我如何尝试,它似乎都无法正常工作。
public class GenerateDungeon: MonoBehaviour {
public GameObject[] cells;
public int number = 0, i = 0;
public void Start()
{
Instantiate(cells[i], new Vector3(0, 0, 0), Quaternion.identity);
while(i < 2)
{
number = Random.Range(1, 5);
i++;
if (number == 1)
{
Instantiate(cells[i], cells[i - 1].transform.position + new Vector3(0, 4, 0), Quaternion.identity);
}
else if (number == 2)
{
Instantiate(cells[i], cells[i - 1].transform.position + new Vector3(4, 0, 0), Quaternion.identity);
}
else if (number == 3)
{
Instantiate(cells[i], cells[i - 1].transform.position + new Vector3(0, -4, 0), Quaternion.identity);
}
else if (number == 4)
{
Instantiate(cells[i], cells[i - 1].transform.position + new Vector3(-4, 0, 0), Quaternion.identity);
}
}
}
}
我没有收到任何错误消息,但是它没有按我预期的方式工作。
答案 0 :(得分:0)
调用Instantiate时,第一个参数是要复制的对象,而不是复制到的目标引用。
因此,您可能想要的是存储对源对象的引用:
public GameObject CubeToCopy;
然后在实例化时,要像这样将每个副本复制到数组中:
cells[i] = Instantiate(CubeToCopy, [...]);
这样,“单元”数组将存储您实际实例化的对象,并且位置逻辑应开始正常工作。