Во-первых, IntermediateSerializer
делает существует в XNA 4.0!
Однако, XNA 4.0 изменилась с ориентации на платформу .NET 2.0 на платформу .NET 4.0, которая бывает двух видов. Сборки среды выполнения XNA нацелены на компактную платформу, а сборки конвейера содержимого нацелены на полную платформу. Вам нужно будет войти в свойства вашего проекта и изменить целевую структуру, чтобы вы могли использовать 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».)
person
Andrew Russell
schedule
26.05.2011