Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.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# 检测循环Unity3D中最后一个对象的位置_C#_Unity3d - Fatal编程技术网

C# 检测循环Unity3D中最后一个对象的位置

C# 检测循环Unity3D中最后一个对象的位置,c#,unity3d,C#,Unity3d,下面的脚本在Y轴上生成20个对象,如何获取该循环中最后一个对象的Y位置 脚本: public GameObject[] Bricks; void SpawnBricks(int numCubes = 20, float startY = 3, float delta = 0.6f, float AngleDis = 3f) { int Rand = Random.Range(0, Bricks.Length); for (int i = 0; i < numCubes;

下面的脚本在Y轴上生成20个对象,如何获取该循环中最后一个对象的Y位置

脚本:

public GameObject[] Bricks;

void SpawnBricks(int numCubes = 20, float startY = 3, float delta = 0.6f, float AngleDis = 3f)
{
    int Rand = Random.Range(0, Bricks.Length);
    for (int i = 0; i < numCubes; ++i)
    {
        var Brick = Instantiate(Bricks[Rand], new Vector3(0, startY - (float)i * delta, 0), Quaternion.identity);
        Brick.transform.parent = gameObject.transform;
    }
}
公共游戏对象[]砖块;
空心砖(整数立方体=20,浮点数星形=3,浮点数三角形=0.6f,浮点数角度=3f)
{
int Rand=Random.Range(0,Bricks.Length);
对于(int i=0;i
您只需将
Brick
的声明移到循环外部,以便在循环退出后保持其作用域,保留在循环中分配的最后一个值:

public GameObject[] Bricks;

void SpawnBricks(int numCubes = 20, float startY = 3, float delta = 0.6f, float AngleDis = 3f)
{
    GameObject Brick;

    int Rand = Random.Range(0, Bricks.Length);
    for (int i = 0; i < numCubes; ++i)
    {
        Brick = Instantiate(Bricks[Rand], new Vector3(0, startY - (float)i * delta, 0), Quaternion.identity);
        Brick.transform.parent = gameObject.transform;
    }

    // Brick now holds the last object returned from Instantiate in the loop
}
公共游戏对象[]砖块;
空心砖(整数立方体=20,浮点数星形=3,浮点数三角形=0.6f,浮点数角度=3f)
{
游戏物体砖;
int Rand=Random.Range(0,Bricks.Length);
对于(int i=0;i
添加一个if语句,查看是否
i+1=numCubes
如果它返回true,那么它是最后一个循环,因此获取
Brick.transform.position.y
@CoderJoe它给我的是对象编号15的y位置,而不是编号20!你能在你的问题中加入更多的细节吗?根据你所拥有的我看不到答案issue@CoderJoe我通过在Y位置添加“-delta*5”解决了这个问题。它仍然给出了对象编号15的Y位置,而不是编号20!15号物体是什么?那是砖块吗?
Bricks
是如何填充的?您需要提供更多详细信息。在这一点上,我的最佳猜测是,您正在使用相同的种子播种
Random
,而在您的情况下,恰好15是第20个随机数。对象号20是循环中生成的最后一个对象,该代码每次都会给我循环中第15个对象的Y位置,但我通过添加“-delta*5”解决了这一问题到Y位置。谢谢我可以向您保证,我提供的代码实际上提供了从
实例化
返回的最后一个对象。问题是,我认为,您正在随机访问
Bricks
数组。我假设它是在其他地方初始化的,如果你真正想要的是第20个对象,你可以通过
Brick=Bricks[19]
得到它,如果你能在你的原始问题中更清楚地解释你到底想实现什么,我可以修改我的答案,这样对未来的访问者会有所帮助。