2016-11-23 172 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项目本身的自定义类型内容?例如没有外部DLL的参考?

谢谢!

+1

将一个中心游戏项目分成几个并不是一团糟。我自己的游戏有一个Engine.csproj,它建立在“这个游戏不独有的东西?另一个游戏可以使用它?”的基础上。 我也使用了大约6个内容管道扩展,一个Engine项目非常有用。 – Jarryd

+0

@Jarryd我同意在你的情况下它不是混乱的,但我正在写一个GUI作为一个dll ..所以现在,而不是一个dll +内容它的2 dll +内容+需要添加引用其中之一dll。 –

回答

0

您可以从源代码编译MonoGame,但将它与UI项目放在同一个项目中。也许只是抓住你需要的类型,如Vector2和Point等......

+0

嗨Jarryd,我的问题具体状态**没有外部dll **,甚至在黑体:)。无论如何,我已经从MG论坛了解到,由于内容构建过程,它是不可能的。我无法接受你的答案,因为它没有真正解决这个问题,也没有添加任何有用的数据。但如果你想稍微改进一下,我会很乐意接受和赞扬。 –