Monogame C#:将图像分配到2D阵列?

时间:2019-01-15 01:28:13

标签: c# arrays multidimensional-array monogame

因此,我尝试使用2D数组创建网格,我需要将图像分配给2D数组的每个点,但是无法以我目前的知识找到方法。我没有创建实际数组的问题,只需将图像分配给数组即可。

    mark = Content.Load<Texture2D>("mark");
    peep1 = Content.Load<Texture2D>("peep1");
    peep2 = Content.Load<Texture2D>("peep2");
    peep3 = Content.Load<Texture2D>("peep3");


    int[,] grid = new int[6, 6];

    grid[0, 0] = peep1; 

我尝试了多种方式分配图像,如上所示,这是我的第一次保存,这是我的第一次尝试。抱歉,如果这确实很明显,我还是新手。

3 个答案:

答案 0 :(得分:1)

不确定您的确切要求是什么,但是您可以按照以下步骤进行操作:

mark = Content.Load<Texture2D>("mark");
peep1 = Content.Load<Texture2D>("peep1");
peep2 = Content.Load<Texture2D>("peep2");
peep3 = Content.Load<Texture2D>("peep3");


Texture2D[,] grid = new Texture2D[6, 6];

grid[0, 0] = peep1; 

只需将数据类型从int更改为Texture2D,因为您始终分配的是Texture2D而不是int

答案 1 :(得分:0)

如果您实际上想在网格中绘制它们,则应调用DRAW方法之一,并为其授予要为其分配纹理的位置。 您应该创建一个点数组,并将其绘制到纹理上,并在darw方法中使用它。使用向量或点:(可以说是60X60像素)

    markpoint = new Point (0,0);
    peep1pont = new Point (60,0);
    peep2point = new Point (0,60);
    peep3point = new Point (60,60);

for i to numberOfTextures:
draw(...,...,Texture(the array or grid of textures),Point(the array or grid of points),...,...)

答案 2 :(得分:0)

如果我没记错的话,您想要实现的就是要用定义的数组创建一个映射。如果是这样,可以采用以下方法: -首先,创建网格:

int[,] grid = new int[,]
{
    //just 2x2 grid, for example
    {0, 1,},
    {1, 2,},
}

-接下来,在基于您在第1步中创建的网格的绘图中

public void Draw(SpriteBatch spriteBatch)
{
    spriteBatch.Begin();
    for (int i = 0; i < grid.GetLength(1); i++)//width
    {
        for (int j = 0; j < grid.GetLength(0); j++)//height
        {
            int textureIndex = grid[j, i];
            if (textureIndex == -1)
                continue;

            Texture2D texture = tileTextures[textureIndex];//list of textures
            spriteBatch.Draw(texture, new Rectangle(
                i * 60, j * 60, 60, 60), Color.White);
        }
    }
    spriteBatch.End();
}