Использование нескольких SpriteBatches на разных уровнях игры XNA, в результате чего компоненты остаются невидимыми - PullRequest
0 голосов
/ 15 января 2012

В настоящее время я пытаюсь добавить логику Screens в мою игру с космическими захватчиками на основе XNA.

Моя проблема:

Каждый экран управляет своими собственными игровыми компонентами (SpaceShip, EnemyMatrix и т. Д.) С помощьюсправка экземпляра CompositeDrawableComponent, используемого в качестве GameComponentsManager.

Каждый игровой компонент содержит в себе дополнительные игровые компоненты (т. Е. SpaceShip, держащий Bullet) и, таким образом, содержит собственный экземпляр GameComponentsManager.

Каждый GameComponentsManager содержит SpriteBatch для всех своих компонентов, т.е. PlayScreen использует уникальный SpriteBatch для своих космических кораблей, а каждый космический корабль использует уникальный SpriteBatch для своих пуль.

В результате космический кораблькомпоненты просто рисуются за компонентами экрана (в моем случае, фоном) и остаются невидимыми для пользователя.

Как я могу решить эту проблему?

1 Ответ

1 голос
/ 16 января 2012

Не используйте несколько SpriteBatches.

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

...