GameService без GameComponent? - PullRequest
       8

GameService без GameComponent?

0 голосов
/ 06 октября 2009

В XNA допустимо ли создать GameService для объекта, который не является GameComponent? Я знаю, что GameService предназначен для доступа к GameComponent, но что, если объекту, к которому вы пытаетесь предоставить доступ, не нужно обновляться при каждом цикле обновления? Например, у меня есть объект Camera2D, который может вычислить Matrix для SpriteBatch.Begin(). Камера не нуждается в обновлении, так как ее положение, поворот и т. Д. Обновляются кодом игры.

Все, что вам нужно для создания GameService, это тип и объект провайдера, поэтому объект провайдера не должен расширять GameComponent, но является ли это приемлемым способом ведения дел? Есть ли лучший способ?

1 Ответ

1 голос
/ 06 октября 2009

Сервисы также не обязательно должны быть GameComponent. Просто взгляните на GraphicsDeviceManager , он предоставляет IGraphicsDeviceService и не является GameComponent. Контейнер игровых сервисов - это просто способ свободного соединения ваших объектов.

Создайте интерфейс ICamera2D, сделайте так, чтобы класс Camera2D его реализовал, а затем зарегистрируйте экземпляр Camera2D в качестве поставщика услуг для ICamera2D в Game.Services. Затем вы используете этот интерфейс для связи с экземпляром Camera2D в других ваших классах. Это означает, что если в какой-то момент вам нужно перейти на OtherCamera2D, вам нужно только зарегистрировать его вместо экземпляра Camera2D в вашем контейнере служб и не нужно изменять другие ваши классы.

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