Monogame C #: назначение изображений в 2D-массив? - PullRequest
0 голосов
/ 15 января 2019

Итак, я пытаюсь создать сетку с использованием 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 голосов
/ 19 января 2019

Если вы действительно хотите нарисовать их в сетке, вам следует вызвать один из методов 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),...,...)
0 голосов
/ 27 марта 2019

Если я не ошибаюсь, вы хотите добиться того, чтобы вы создали карту с указанным вами массивом. Если это так, вот способ сделать это: - Прежде всего, создайте сетку:

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();
}
0 голосов
/ 15 января 2019

Не уверен, каковы ваши точные требования, но вы можете сделать это так:

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.

...