Прежде всего, я рекомендую , а не с использованием DrawableGameComponent , мои аргументы для этого изложены в этом ответе здесь .
Теперь,чтобы ваш код работал как есть, вам нужно передать ContentManager
в конструктор, который вы создаете (см. ответ JoDG ).Но для этого вы должны построить его только после того, как ContentManager
будет готов.Для менеджера контента Game
это происходит во время и после вызова LoadContent
(т.е. не в contstructor вашей игры или в методе Initialize
).
Теперь вы можете сделать что-то как используя DrawableGameComponent, что намного лучше: просто дайте вашему классу Ship
метод LoadContent
и вызовите его из LoadContent
вашей игры (как вы бы это сделали для Draw
и Update
).
Если текстура, которую использует ваш корабль, не является частью состояния вашего корабля (то есть: все корабли используют одну и ту же текстуру), вы можете даже сделать ее статичной, избавив вас от необходимости вызывать LoadContent
на каждом корабле, который вы создаете.У меня есть пример этого этот ответ здесь , который также содержит список другой полезной информации о Content Manager.