Ну, во-первых, 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.)