Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 赢得的对象';不要在正确的位置产卵_C#_Unity3d - Fatal编程技术网

C# 赢得的对象';不要在正确的位置产卵

C# 赢得的对象';不要在正确的位置产卵,c#,unity3d,C#,Unity3d,我试图以随机模式生成立方体 首先,一个立方体诞生在这个世界上。然后生成一个随机数。此数字决定下一个多维数据集的生成位置。在生成cube1之后,我们称它为cube1,cube2应该使用cube1的位置来生成,但它仍然使用原始立方体的位置 我不明白为什么 我已经尝试过使用Debug.Log查看不同的位置,但无论我做什么尝试,似乎都无法让它正常工作 public class GenerateDungeon: MonoBehaviour { public GameObject[] cells;

我试图以随机模式生成立方体

首先,一个立方体诞生在这个世界上。然后生成一个随机数。此数字决定下一个多维数据集的生成位置。在生成cube1之后,我们称它为cube1,cube2应该使用cube1的位置来生成,但它仍然使用原始立方体的位置

我不明白为什么

我已经尝试过使用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,i=0;
公开作废开始()
{
实例化(单元格[i],新向量3(0,0,0),四元数.identity);
而(i<2)
{
数字=随机范围(1,5);
i++;
如果(数字==1)
{
实例化(单元格[i],单元格[i-1].transform.position+新向量3(0,4,0),四元数.identity);
}
else if(数字=2)
{
实例化(单元格[i],单元格[i-1].transform.position+新向量3(4,0,0),四元数.identity);
}
else if(数字=3)
{
实例化(单元格[i],单元格[i-1].transform.position+新向量3(0,-4,0),四元数.identity);
}
else if(数字=4)
{
实例化(单元格[i],单元格[i-1].transform.position+新向量3(-4,0,0),四元数.identity);
}
}
}
}

我没有收到任何错误消息,但它没有按我预期的方式工作。

调用实例化时,第一个参数是要复制的对象,而不是复制到的目标引用

因此,您可能需要存储对源对象的引用:

public GameObject CubeToCopy;
然后在实例化时,您希望将每个复制到数组中,如下所示:

cells[i] = Instantiate(CubeToCopy, [...]);

这样,“cells”数组就存储了您实际实例化的对象,并且您的位置逻辑应该开始正常工作。

您对两个调用使用相同的随机范围,因此它可以对多个多维数据集使用相同的数字。“但它没有按我预期的方式工作。”,这对我们来说不是一个很好的诊断帮助?