MonoGame Добавление текстуры - PullRequest
0 голосов
/ 11 мая 2018

Я учусь c # с MonoGame. Как мне загрузить текстуру в этом классе? Я не могу использовать this.Content.Load ("текстура");

public class Mob1
{
    Texture2D texture;
    public float X;
    public float Y;

    public Mob1(float x, float y, Texture2D texture)
    {
        this.X = x;
        this.Y = y;
        this.texture = texture;
    } 

    public Mob1()
    {
        this.X = 50;
        this.Y = 50;
        this.texture = ???;
    }

1 Ответ

0 голосов
/ 13 мая 2018

Вам необходимо учитывать код, который вызывает конструктор вашего Mob1 класса. Куда ты будешь звонить new Mob1()?

Скажем, например, вы создаете новых мобов в методе LoadContent вашего Game класса.

public void LoadContent()
{
    var mob = new Mob1();
}

На данный момент у вас есть несколько вариантов.

Вы можете использовать первый конструктор и передать текстуру вместе со значениями X и Y:

var texture = Content.Load<Texture2D>("mob1");
var mob = new Mob1(15, 15, texture);

Или вы можете изменить второй конструктор так, чтобы он принимал ContentManager в качестве параметра:

public Mob1(ContentManager content)
{
    this.X = 50;
    this.Y = 50;
    this.texture = content.Load<Texture2D>("mob1");
}

Тогда ваш звонок в LoadContent становится:

var mob = new Mob1(Content);

Лично я предпочитаю первый конструктор, потому что он правильно отделяет класс Mob1 от ContentManager. С другой стороны, некоторые люди предпочитают второй подход, потому что они могут определять «данные» внутри самого класса. Это действительно выбор дизайна, и вы должны сделать это самостоятельно.

Дело в том, что вам нужно как-то передать текстуру в класс. Это не только варианты, но они с наименьшей вероятностью приведут вас к неприятностям позже.

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

Я понимаю, что вы все еще новичок в C #, и я поднял некоторые довольно сложные темы здесь. Вы всегда можете Google Google условия, которые я упомянул, если вы не знаете, что они такое. Честно говоря, не беспокойтесь об этом слишком сильно. Просто выбери что-нибудь и иди с этим. Это лучший способ учиться.

...