【发布时间】:2016-12-08 08:18:01
【问题描述】:
我正在使用 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 中引用一个类,感觉非常混乱..
所以我的问题是:是否可以在 XML 内容中使用 MonoGame 项目本身的自定义类型?例如,没有参考的外部 dll?
谢谢!
【问题讨论】:
-
将一个核心游戏项目拆分成几个一点也不杂乱。我自己的游戏有一个 Engine.csproj,它建立在“什么不是这个游戏独有的?其他游戏可以使用它吗?”的理念之上。我还使用了大约 6 个内容管道扩展,一个 Engine 项目非常有用。
-
@Jarryd 我同意在你的情况下它一点也不混乱,但我正在编写一个作为 dll 提供的 gui lib .. 所以现在不是一个 dll + 内容,而是 2 个 dll + 内容 +需要添加对其中一个 dll 的引用。