Monogame C#: присвоение изображений 2D-массиву?

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

Я пробовал назначать изображение несколькими способами, показанный выше был моей первой попыткой, так как это то, что я сохранил. Извините, если это действительно очевидно, я еще новичок.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
391
3

Ответы 3

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

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.

И как мне заставить это рисовать как часть сетки? Извините, я действительно изо всех сил пытаюсь разобраться в моноигре

T_McMillan97 15.01.2019 02:47

Вы можете прокручивать свою сетку и рисовать каждый Texture2D с помощью SpriteBatch. Было бы намного проще создать игру, если бы вы знали объектно-ориентированное программирование, такое как создание моделей с помощью классов и тому подобное. Это ОЧЕНЬ сложно объяснить здесь как ответ, но вы должны изучить это, так как это очень полезно.

jegtugado 15.01.2019 02:52

если вы действительно хотите нарисовать их в сетке, вы должны вызвать один из методов 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),...,...)

Так что я думаю, что имею это право. Как обычно, я создаю переменную для каждого изображения, например peep1 и peep2. Затем создать массив точек и назначить каждую точку в массиве? Что-то вроде этого?

T_McMillan97 23.01.2019 15:08

да, именно так ... это простое решение и прямое решение вашей конкретной проблемы. если вы хотите более сложные решения, вы должны проверить это Плитки

Ben Efrat 23.01.2019 19:55

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

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();
}

Другие вопросы по теме