创建由较小六边形组成的六边形。统一,c#

创建由较小六边形组成的六边形。统一,c#,c#,unity3d,C#,Unity3d,我使用9个类似的循环来创建这样的六边形,它由更小的六边形组成 我的问题是 如何将9个for循环替换为1个for循环?任何想法,非常感谢 中柱 (x=0,y=(-4;4) for (int x = 0; x < 1; x++) { for (int y = 4; y > -5; y--) { Instantiate(cell, new Vector2(x, y), Quaternion.Euler(0.0

我使用9个类似的循环来创建这样的六边形,它由更小的六边形组成

我的问题是 如何将9个for循环替换为1个for循环?任何想法,非常感谢

中柱

    (x=0,y=(-4;4)
    for (int x = 0; x < 1; x++)
    {
        for (int y = 4; y > -5; y--)
        {
            Instantiate(cell, new Vector2(x, y), Quaternion.Euler(0.0f, 0.0f, 90.0f));
        }
    }
(x=0,y=(-4;4)
对于(int x=0;x<1;x++)
{
对于(int y=4;y>-5;y--)
{
实例化(单元,新向量2(x,y),四元数.Euler(0.0f,0.0f,90.0f));
}
}
右第一列

    (x=1,y=(-3.5;3.5))
    for (float x = 0.75f; x < 1.75; x++)
        {
            for (float y = 3.5f; y > -4.5; y--)
            {
                Instantiate(cell, new Vector2(x,y), Quaternion.Euler(0.0f,0.0f,90.0f));
            }
        }
    (x=2,y=(-3;3))
    for (float x = 1.5f; x < 2.5f; x++)
    {
        for (int y = 3; y > -4; y--)
        {
            Instantiate(cell, new Vector2(x, y), Quaternion.Euler(0.0f, 0.0f, 90.0f));
        }
    }
    (x=3,y=(-2.5;2.5))
    for (float x = 2.25f; x < 3.25; x++)
    {
        for (float y = 2.5f; y > -3.5; y--)
        {
            Instantiate(cell, new Vector2(x, y), Quaternion.Euler(0.0f, 0.0f, 90.0f));
        }
    }
    (x=4,y=(-2;2))
    for (int x = 3; x < 4; x++)
    {
        for (int y = 2; y > -3; y--)
        {
            Instantiate(cell, new Vector2(x, y), Quaternion.Euler(0.0f, 0.0f, 90.0f));
        }
    }
(x=1,y=(-3.5;3.5))
用于(浮动x=0.75f;x<1.75;x++)
{
对于(浮动y=3.5f;y>-4.5;y--)
{
实例化(单元,新向量2(x,y),四元数.Euler(0.0f,0.0f,90.0f));
}
}
右第二列

    (x=1,y=(-3.5;3.5))
    for (float x = 0.75f; x < 1.75; x++)
        {
            for (float y = 3.5f; y > -4.5; y--)
            {
                Instantiate(cell, new Vector2(x,y), Quaternion.Euler(0.0f,0.0f,90.0f));
            }
        }
    (x=2,y=(-3;3))
    for (float x = 1.5f; x < 2.5f; x++)
    {
        for (int y = 3; y > -4; y--)
        {
            Instantiate(cell, new Vector2(x, y), Quaternion.Euler(0.0f, 0.0f, 90.0f));
        }
    }
    (x=3,y=(-2.5;2.5))
    for (float x = 2.25f; x < 3.25; x++)
    {
        for (float y = 2.5f; y > -3.5; y--)
        {
            Instantiate(cell, new Vector2(x, y), Quaternion.Euler(0.0f, 0.0f, 90.0f));
        }
    }
    (x=4,y=(-2;2))
    for (int x = 3; x < 4; x++)
    {
        for (int y = 2; y > -3; y--)
        {
            Instantiate(cell, new Vector2(x, y), Quaternion.Euler(0.0f, 0.0f, 90.0f));
        }
    }
(x=2,y=(-3;3))
对于(浮动x=1.5f;x<2.5f;x++)
{
对于(int y=3;y>-4;y--)
{
实例化(单元,新向量2(x,y),四元数.Euler(0.0f,0.0f,90.0f));
}
}
第三栏右

    (x=1,y=(-3.5;3.5))
    for (float x = 0.75f; x < 1.75; x++)
        {
            for (float y = 3.5f; y > -4.5; y--)
            {
                Instantiate(cell, new Vector2(x,y), Quaternion.Euler(0.0f,0.0f,90.0f));
            }
        }
    (x=2,y=(-3;3))
    for (float x = 1.5f; x < 2.5f; x++)
    {
        for (int y = 3; y > -4; y--)
        {
            Instantiate(cell, new Vector2(x, y), Quaternion.Euler(0.0f, 0.0f, 90.0f));
        }
    }
    (x=3,y=(-2.5;2.5))
    for (float x = 2.25f; x < 3.25; x++)
    {
        for (float y = 2.5f; y > -3.5; y--)
        {
            Instantiate(cell, new Vector2(x, y), Quaternion.Euler(0.0f, 0.0f, 90.0f));
        }
    }
    (x=4,y=(-2;2))
    for (int x = 3; x < 4; x++)
    {
        for (int y = 2; y > -3; y--)
        {
            Instantiate(cell, new Vector2(x, y), Quaternion.Euler(0.0f, 0.0f, 90.0f));
        }
    }
(x=3,y=(-2.5;2.5))
用于(浮动x=2.25f;x<3.25;x++)
{
对于(浮动y=2.5f;y>-3.5;y--)
{
实例化(单元,新向量2(x,y),四元数.Euler(0.0f,0.0f,90.0f));
}
}
右第四列

    (x=1,y=(-3.5;3.5))
    for (float x = 0.75f; x < 1.75; x++)
        {
            for (float y = 3.5f; y > -4.5; y--)
            {
                Instantiate(cell, new Vector2(x,y), Quaternion.Euler(0.0f,0.0f,90.0f));
            }
        }
    (x=2,y=(-3;3))
    for (float x = 1.5f; x < 2.5f; x++)
    {
        for (int y = 3; y > -4; y--)
        {
            Instantiate(cell, new Vector2(x, y), Quaternion.Euler(0.0f, 0.0f, 90.0f));
        }
    }
    (x=3,y=(-2.5;2.5))
    for (float x = 2.25f; x < 3.25; x++)
    {
        for (float y = 2.5f; y > -3.5; y--)
        {
            Instantiate(cell, new Vector2(x, y), Quaternion.Euler(0.0f, 0.0f, 90.0f));
        }
    }
    (x=4,y=(-2;2))
    for (int x = 3; x < 4; x++)
    {
        for (int y = 2; y > -3; y--)
        {
            Instantiate(cell, new Vector2(x, y), Quaternion.Euler(0.0f, 0.0f, 90.0f));
        }
    }
(x=4,y=(-2;2))
对于(int x=3;x<4;x++)
{
对于(int y=2;y>-3;y--)
{
实例化(单元,新向量2(x,y),四元数.Euler(0.0f,0.0f,90.0f));
}
}
左第一列

    (x=-1,y=(-3.5;3.5))
    for (float x = -0.75f; x < 0.25; x++)
    {
        for (float y = 3.5f; y > -4.5; y--)
        {
            Instantiate(cell, new Vector2(x, y), Quaternion.Euler(0.0f, 0.0f, 90.0f));
        }
    }
    (x=-2,y=(-3;3))
    for (float x = -1.5f; x < -0.5f; x++)
    {
        for (int y = 3; y > -4; y--)
        {
            Instantiate(cell, new Vector2(x, y), Quaternion.Euler(0.0f, 0.0f, 90.0f));
        }
    }
    (x=-3,y=(-2.5;2.5))
    for (float x = -2.25f; x < -1.25; x++)
    {
        for (float y = 2.5f; y > -3.5; y--)
        {
            Instantiate(cell, new Vector2(x, y), Quaternion.Euler(0.0f, 0.0f, 90.0f));
        }
    }
    (x=-4,y=(-2;2))
    for (int x = -3; x < -2; x++)
    {
        for (int y = 2; y > -3; y--)
        {
            Instantiate(cell, new Vector2(x, y), Quaternion.Euler(0.0f, 0.0f, 90.0f));
        }
    }
(x=-1,y=-3.5;3.5))
对于(浮点x=-0.75f;x<0.25;x++)
{
对于(浮动y=3.5f;y>-4.5;y--)
{
实例化(单元,新向量2(x,y),四元数.Euler(0.0f,0.0f,90.0f));
}
}
第二列左

    (x=-1,y=(-3.5;3.5))
    for (float x = -0.75f; x < 0.25; x++)
    {
        for (float y = 3.5f; y > -4.5; y--)
        {
            Instantiate(cell, new Vector2(x, y), Quaternion.Euler(0.0f, 0.0f, 90.0f));
        }
    }
    (x=-2,y=(-3;3))
    for (float x = -1.5f; x < -0.5f; x++)
    {
        for (int y = 3; y > -4; y--)
        {
            Instantiate(cell, new Vector2(x, y), Quaternion.Euler(0.0f, 0.0f, 90.0f));
        }
    }
    (x=-3,y=(-2.5;2.5))
    for (float x = -2.25f; x < -1.25; x++)
    {
        for (float y = 2.5f; y > -3.5; y--)
        {
            Instantiate(cell, new Vector2(x, y), Quaternion.Euler(0.0f, 0.0f, 90.0f));
        }
    }
    (x=-4,y=(-2;2))
    for (int x = -3; x < -2; x++)
    {
        for (int y = 2; y > -3; y--)
        {
            Instantiate(cell, new Vector2(x, y), Quaternion.Euler(0.0f, 0.0f, 90.0f));
        }
    }
(x=-2,y=-3)
对于(浮动x=-1.5f;x<-0.5f;x++)
{
对于(int y=3;y>-4;y--)
{
实例化(单元,新向量2(x,y),四元数.Euler(0.0f,0.0f,90.0f));
}
}
第三列左

    (x=-1,y=(-3.5;3.5))
    for (float x = -0.75f; x < 0.25; x++)
    {
        for (float y = 3.5f; y > -4.5; y--)
        {
            Instantiate(cell, new Vector2(x, y), Quaternion.Euler(0.0f, 0.0f, 90.0f));
        }
    }
    (x=-2,y=(-3;3))
    for (float x = -1.5f; x < -0.5f; x++)
    {
        for (int y = 3; y > -4; y--)
        {
            Instantiate(cell, new Vector2(x, y), Quaternion.Euler(0.0f, 0.0f, 90.0f));
        }
    }
    (x=-3,y=(-2.5;2.5))
    for (float x = -2.25f; x < -1.25; x++)
    {
        for (float y = 2.5f; y > -3.5; y--)
        {
            Instantiate(cell, new Vector2(x, y), Quaternion.Euler(0.0f, 0.0f, 90.0f));
        }
    }
    (x=-4,y=(-2;2))
    for (int x = -3; x < -2; x++)
    {
        for (int y = 2; y > -3; y--)
        {
            Instantiate(cell, new Vector2(x, y), Quaternion.Euler(0.0f, 0.0f, 90.0f));
        }
    }
(x=-3,y=-2.5;2.5))
对于(浮点x=-2.25f;x<-1.25;x++)
{
对于(浮动y=2.5f;y>-3.5;y--)
{
实例化(单元,新向量2(x,y),四元数.Euler(0.0f,0.0f,90.0f));
}
}
左第四列

    (x=-1,y=(-3.5;3.5))
    for (float x = -0.75f; x < 0.25; x++)
    {
        for (float y = 3.5f; y > -4.5; y--)
        {
            Instantiate(cell, new Vector2(x, y), Quaternion.Euler(0.0f, 0.0f, 90.0f));
        }
    }
    (x=-2,y=(-3;3))
    for (float x = -1.5f; x < -0.5f; x++)
    {
        for (int y = 3; y > -4; y--)
        {
            Instantiate(cell, new Vector2(x, y), Quaternion.Euler(0.0f, 0.0f, 90.0f));
        }
    }
    (x=-3,y=(-2.5;2.5))
    for (float x = -2.25f; x < -1.25; x++)
    {
        for (float y = 2.5f; y > -3.5; y--)
        {
            Instantiate(cell, new Vector2(x, y), Quaternion.Euler(0.0f, 0.0f, 90.0f));
        }
    }
    (x=-4,y=(-2;2))
    for (int x = -3; x < -2; x++)
    {
        for (int y = 2; y > -3; y--)
        {
            Instantiate(cell, new Vector2(x, y), Quaternion.Euler(0.0f, 0.0f, 90.0f));
        }
    }
(x=-4,y=-2)
对于(int x=-3;x<-2;x++)
{
对于(int y=2;y>-3;y--)
{
实例化(单元,新向量2(x,y),四元数.Euler(0.0f,0.0f,90.0f));
}
}
我需要这个: 一个公式创建了整个六边形

四元数rot=Quaternion.Euler(0.0f,0.0f,90.0f);
Quaternion rot = Quaternion.Euler(0.0f, 0.0f, 90.0f);

for (int x = -4; x <= 4; x++)
{
    float xPos = x * 0.75F;

    int nrOfYTiles = 9 - Math.Abs(x);
    int halfNrOfYTiles = nrOfYTiles / 2;

    float yOffset = 0.5F * Math.Abs(x % 2);

    for (int y = 0; y < nrOfYTiles; y++)
    {
        float yPos = y - halfNrOfYTiles + yOffset;
        Instantiate(cell, new Vector2(xPos, yPos), rot);
    }
}

对于(int x=-4;x@TimMarkin,请参见。@TimMarkin如果答案正确,请接受它。