DrawableGameComponent XNA, Право Реализации путь?

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

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);

Это, как это сделано, я посмотрел на Набор Платформера, который находится в XNA 3.1 и для класса Уровня, если они не реализовали DrawableGameComponent и решенный для имитации той же функциональности.

1
задан Mike Diaz 28 July 2010 в 03:28
поделиться

2 ответа

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

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

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

1
ответ дан 2 September 2019 в 22:39
поделиться

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

Для «уровней» это немного больше границы.

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

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

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

1
ответ дан 2 September 2019 в 22:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: