因此,我尝试使用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;
我尝试了多种方式分配图像,如上所示,这是我的第一次保存,这是我的第一次尝试。抱歉,如果这确实很明显,我还是新手。
答案 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();
}