DrawableGameComponent XNA, реализация Правильный путь? - PullRequest
1 голос
/ 28 июля 2010

Так что я гуглил / пытался найти ответ на этот вопрос, но составлял пробелы.Если я хочу, чтобы у каждого уровня был уровень игры с разными активами, могу ли я сделать что-то вроде

public class Level:DrawableGameComponent
{
}



//somewhere inside functions or w.e
  var Level = new Level(this,"Level1");
  Components.Add(Level));
//Player wins Level
  Components.Remove(Level));
   Level = new Level(this,"Level2");
  Components.Add(Level);

Вот как это делается, я посмотрел на Platformer Kit, который есть в XNA 3.1, и длякласс Level при условии, что они не реализуют DrawableGameComponent и решили подражать той же функциональности.

Ответы [ 2 ]

1 голос
/ 28 июля 2010

Часто проще избегать использования DrawableGameComponent для "игрового материала", так что вы лучше контролируете, когда вещи прорисовываются / загружаются.

Для "уровней" это немного более погранично.

Первая проблема, которая приходит на ум, заключается в том, что DrawableGameComponent.LoadContent() вызывается только с Game.LoadContent().Поэтому вам придется вызывать его вручную при переключении уровней (то же самое относится и к UnloadContent()). [Правка: на самом деле порядок инициализации немного другой, я думаю - вам придется проверить себя.]

(И если подумать, если все ваши уровни имеют отдельный контент, вы можете рассмотреть возможность предоставления каждому из них ContentManager, чтобы вы могли использовать Unload() только для контента этого уровня.)

Вы все равно должны будете сделать некоторые ручные звонки.Так что в действительности это разница между реализацией DrawableGameComponent и добавлением его в список компонентов, а также наличием уровня в качестве члена вашего игрового класса и вызовом его функций Draw() и Update() самостоятельно.Разницы не так много, но лично я бы выбрал последнее.

1 голос
/ 28 июля 2010

Это способ, и это хороший способ использовать DrawableGameCompenents.Но это не единственный или лучший способ.Нет ничего плохого в том, чтобы использовать этот подход для ваших уровней.И если вы собираетесь использовать DrawableGameComponents, то определенно лучше использовать их на более высоком уровне (например, для уровней), а затем, например, сделать каждый символ и плитку на экране DrawableGameComponent.

Лично я никогда ими не пользуюсь, так же как и Platformer Kit. Я предпочитаю просто создавать свои собственные классы и имитировать то, что делает DrawableGameComponent.Но один способ не обязательно лучше, чем другой.

Кроме того, как примечание, в то время как StackOverflow - фантастический сайт для вопросов и ответов, вы все равно получите самые быстрые и лучшие ответы на XNA.форумы.Участники там фантастические, и часто сами разработчики платформы Microsoft XNA подскакивают, чтобы ответить на вопросы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...