Вам необходимо учитывать код, который вызывает конструктор вашего 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 условия, которые я упомянул, если вы не знаете, что они такое. Честно говоря, не беспокойтесь об этом слишком сильно. Просто выбери что-нибудь и иди с этим. Это лучший способ учиться.