Не создавайте никаких классов «менеджера ресурсов». Просто передайте класс XNA ContentManager
(экземпляр, полученный из Game.Content
).
Менеджер контента по умолчанию автоматически обработает для вас повторно загруженные объекты. Таким образом, вы можете Content.Load<Texture2D>("something")
из нескольких мест, и вы всегда получите обратно тот же экземпляр текстуры.
Так что, если у вас есть набор классов для ваших игровых объектов, со стандартным дизайном предоставления каждому методу Update
и Draw
, который вы вызываете из соответствующих методов в Game
- просто добавьте другой метод: LoadContent
для тех классов, которые принимают аргумент ContentManager
.
Вы можете вызвать этот метод из метода LoadContent
вашей игры.
Если позже вы захотите внедрить какую-то систему загрузки с задержкой (например, загрузку контента при смене уровней), вы также можете вызвать метод LoadContent
ваших игровых классов из метода Update
вашей игры. (но имейте в виду, что загрузка контента идет медленно - так что вы можете вызвать экран «загрузки»).
Выгрузка контента немного сложнее. Все, что вы создаете сами, вы должны разгрузить. Но все, что загружено из ContentManager
(поскольку экземпляры являются общими), должно выгружаться только этим менеджером контента (Game
будет обрабатывать выгрузку его члена Content
, когда это необходимо). Вы можете найти это сообщение в блоге достойное прочтения.