Каков «рекомендуемый» способ загрузки внешних данных в игру XNA4.0? - PullRequest
2 голосов
/ 25 мая 2011

В настоящее время я работаю над игрой, предназначенной для отправки в XBLIG.

У меня довольно простой вопрос, мне было интересно, какой "рекомендуемый" способ загрузки данных через внешний файл XML.

Мне нужно это по крайней мере для развития (на ПК), чтобы гейм-дизайнер мог переключаться с переменными игрового процесса без необходимости перестраивать.

В xna3.1 я использовал IntermediateSerializer, который больше несуществует для xna4.0.

Я, вероятно, собираюсь создать расширение конвейера контента для доставки, если, конечно, кто-то не может предложить удивительный ответ, который работает как на ПК, так и на XBox!: D

Спасибо,

1 Ответ

2 голосов
/ 26 мая 2011

Ну, во-первых, IntermediateSerializer существует в XNA 4.0 !

Однако , XNA 4.0 изменилась с ориентации на платформу .NET 2.0 на ориентацию на платформу .NET 4.0, которая поставляется в двух вариантах. Сборки времени выполнения XNA предназначены для компактной платформы , но сборки Content Pipeline предназначены для полной платформы. Вам нужно будет зайти в свойства вашего проекта и изменить целевую среду, чтобы позволить вам использовать IntermediateSerializer.

Кроме того, Content Pipeline недоступен недоступен на Xbox 360, и и недоступен в Windows без полной XNA Game Studio установлена. Это означает, что вы не можете использовать InterpediateSerializer при работе на Xbox 360 или для распространения в Windows (относится как к XNA 3.1, так и к 4.0).

Поэтому, если вы хотите использовать его во время выполнения, во время разработки, решение состоит в том, чтобы добавить конкретную цель сборки для разработки под Windows в ваш проект. Дайте ему определение препроцессора для #ifdef DEVELOPMENT, чтобы обернуть ваш код, сделать целевой (намного более объемный) полную .NET 4.0 Framework и добавить ссылку на сборку в Microsoft.Xna.Framework.Content.Pipeline (где живет IntermediateSerializer).

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

Таким образом, все, что остается, это вопрос о том, что делать в ваших версиях дистрибутива, где у вас нет есть IntermediateSerializer?

Это чрезвычайно просто : вы можете перетащить ваш XML-файл в ваш контент-проект. Импортер XML Content Pipeline по умолчанию берет ваш XML, пропускает его через IntermediateSerializer, создавая файл XNB. Затем вы можете загрузить этот файл как контент во время выполнения через ContentManager. ( см. Также )

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

...