Часто проще избегать использования DrawableGameComponent
для "игрового материала", так что вы лучше контролируете, когда вещи прорисовываются / загружаются.
Для "уровней" это немного более погранично.
Первая проблема, которая приходит на ум, заключается в том, что DrawableGameComponent.LoadContent()
вызывается только с Game.LoadContent()
.Поэтому вам придется вызывать его вручную при переключении уровней (то же самое относится и к UnloadContent()
). [Правка: на самом деле порядок инициализации немного другой, я думаю - вам придется проверить себя.]
(И если подумать, если все ваши уровни имеют отдельный контент, вы можете рассмотреть возможность предоставления каждому из них ContentManager
, чтобы вы могли использовать Unload()
только для контента этого уровня.)
Вы все равно должны будете сделать некоторые ручные звонки.Так что в действительности это разница между реализацией DrawableGameComponent
и добавлением его в список компонентов, а также наличием уровня в качестве члена вашего игрового класса и вызовом его функций Draw()
и Update()
самостоятельно.Разницы не так много, но лично я бы выбрал последнее.