Да .
DrawableGameComponent
и его друзья являются необязательными битами платформы XNA. Считай их помощниками. Простой пример реализации.
Если вам требуется больше или иная функциональность по сравнению с тем, что они предоставляют, вы должны заменить их собственной реализацией!
В этом случае кажется, что вам нужен объект "Button" (например, LevelButton
), возможно, с такими методами, как Update
и Draw
.
И затем вам нужен какой-то объект «Контейнер кнопок», который будет содержать все эти кнопки и держать их нарисованными и обновленными, когда они будут на экране. Но не делайте с ними ничего, пока они находятся за кадром.
(Вы можете создать свой собственный экземпляр GameComponentCollection
для управления этим и продолжать использовать игровые компоненты. Но вы все равно должны предоставить свою собственную логику отрисовки / обновления / загрузки / выгрузки / инициализации. Логика для Game.Components
внутренний к Game
и не подлежит повторному использованию. Я рекомендую просто использовать List
- будьте проще!)
Альтернатива созданию нескольких коллекций - добавление и удаление (или отключение / включение) компонентов из глобальной коллекции - ужасно уродлива и подвержена ошибкам. Не делай этого.