2016-11-23 11 views
0

Я работаю с MonoGame, и я хочу использовать XML для прикрепления некоторых метаданных для некоторых моих текстур. Я создал следующий класс:MonoGame использует типы из того же проекта в XML

public class TextureData 
    { 
     public float FrameWidth; 
     public float FrameHeight; 
    } 

И теперь я пытаюсь создать XML в конвейере контента и загрузить его. Я пытался писать следующий XML:

<?xml version="1.0" encoding="utf-8"?> 
<XnaContent xmlns:ns="Microsoft.Xna.Framework"> 

    <Asset Type="TextureData"> 
    <FrameWidth>0.2</FrameWidth> 
    <FrameHeight>0.2</FrameHeight> 
    </Asset> 

</XnaContent> 

И получил следующее сообщение об ошибке:

error : Importer 'XmlImporter' had unexpected failure! 
1> Microsoft.Xna.Framework.Content.Pipeline.InvalidContentException: Could not resolve type 'TextureData'. 

Я прочитал некоторые учебники и во всех из них, когда они используют пользовательский тип они берут его от внешних DLL и ссылок Это. Поэтому я попытался переместить класс во внешнюю dll и использовать его оттуда, и он работает. Тем не менее, очень сложно создать целую библиотеку классов в моем исходном проекте, просто чтобы ссылаться на класс из XML.

Итак, мой вопрос заключается в следующем: возможно ли использовать собственный тип из самого проекта MonoGame внутри XML содержание? например, без внешней dll со ссылкой?

Спасибо!

+1

Это не грязно, чтобы отделить один центральный игровой проект на несколько. В моей собственной игре есть Engine.csproj, который построен на идее «Что не уникально для этой игры? И может ли ее использовать другая игра?» Я также использую около 6 расширений конвейера контента, проект Engine очень полезен. – Jarryd

+0

@Jarryd Я согласен, что это не бесполезно вообще в вашем случае, но я пишу gui lib, который приходит как dll .. так что теперь вместо одного dll + content его 2 dlls + content + необходимо добавить ссылку на один из dlls. –

ответ

0

Вы можете скомпилировать MonoGame из исходного кода, но иметь его в том же проекте, что и ваш проект пользовательского интерфейса. Возможно, просто возьмите нужные вам типы, такие как Vector2 и Point и т. Д.

+0

Привет, Jarryd, мой вопрос конкретно указывает ** без внешней dll **, и его даже жирным шрифтом :). Во всяком случае, я уже понял из форума MG, что это невозможно из-за процесса построения контента. Я не могу принять ваш ответ так, как есть, потому что он действительно не затрагивает вопрос и не добавляет полезных данных. Но если вы хотите немного улучшить его, я буду рад принять и поддержать. –

 Смежные вопросы

  • Нет связанных вопросов^_^