Розташовуючи в XNA лише певні ресурси?


13

ContentManager у XNA 4.0 має лише один метод Unload (), який вивантажує всі активи.

Я хочу мати кілька "глобальних" активів, які завжди завантажуються, але тоді я хочу активів на рівні, які повинні бути вивантажені, коли рівень змінюється.

Чи слід створити другий екземпляр ContentManager як частини класу Level.cs? Або я повинен використовувати Game.Content, а потім зателефонувати. Розмістити активи, які я завантажую? Або я повинен створити власний ContentManager поверх функції ReadAsset, як зазначено тут ?

Відповіді:


12

Створіть другий екземпляр ContentManager.

Ніколи не слід Dispose()речей, які ви завантажуєте з ContentManager (використовуючи програму за замовчуванням), оскільки ці екземпляри спільно використовуються та використовуються повторно.

Створення власної версії ContentManager є ортогональним. У будь-якому випадку ви будете створювати другий екземпляр ContentManager (або клас, похідний від нього). Тож якщо існуюча реалізація відповідає вашим цілям - тоді використовуйте її, інакше перекрийте те, що ви хочете змінити.

Звичайно, якщо ваша гра порівняно невелика - тоді це не матиме значення, якщо ви просто використовуєте один ContentManager і не переймаєтесь завантаженням вмісту між рівнями.


5
+1 і нагадування про те, що я посилаюся тут наступного разу, коли хтось спробує сказати мені, наскільки ситним є одинарний зразок для менеджерів активів.

На веб-сайті XNA я також знайшов демонстрацію управління державними іграми, яка використовує саме це (1 глобальний контент-менеджер та другий на екранах, які потребують цього). Не дуже інтуїтивно, але це зроблять :)
Michael Stum
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.