C# 从DLL绘制XNA文本

C# 从DLL绘制XNA文本,c#,xna,class-library,C#,Xna,Class Library,我计划为XNA构建一个2D游戏库,其中一个组件是一个用于调试的简单文本抽屉。现在,要使用SpriteBatch绘制文本,您需要一个.spritefont文件,这是一个xml格式的文件,这些文件似乎需要编译到一个单独的文件夹中。我不希望用dll复制这些内容,所以我的问题是: 我可以为XNA构建某种文本渲染器吗 答:不需要我随身携带带有dll的外部文件(如果你可以将精灵字体嵌入到dll中,那么它就可以工作了),并且 B:不会强迫我重写大量的底层代码(是托管directx吗?是xna的另一部分?)使S

我计划为XNA构建一个2D游戏库,其中一个组件是一个用于调试的简单文本抽屉。现在,要使用SpriteBatch绘制文本,您需要一个.spritefont文件,这是一个xml格式的文件,这些文件似乎需要编译到一个单独的文件夹中。我不希望用dll复制这些内容,所以我的问题是: 我可以为XNA构建某种文本渲染器吗 答:不需要我随身携带带有dll的外部文件(如果你可以将精灵字体嵌入到dll中,那么它就可以工作了),并且
B:不会强迫我重写大量的底层代码(是托管directx吗?是xna的另一部分?)使SpriteBatch.DrawString代码正常工作。

您能不能要求将SpriteFont传递到您的库中,以便使用库的人都必须提供该组件?这似乎是最好的解决方案,因为从那时起,他们可以使用他们想要的任何字体。或者您可以编写一个组件,该组件根据给定的字体名称生成spritefont xml文件,因为文件并不那么复杂。漠视我忘了XNA编译它的资源。

您可以预编译项目,然后获取spritefont的xnb文件。然后将该文件作为内容文件添加到项目内容文件夹中。然后,它应该与库一起部署。但是,您需要为希望支持的每个平台(xbox360、windows、zune)构建一个单独的xnb文件,并部署正确的文件


或者你为什么不创建一个XNA内容库项目呢?

第一种可能性:是的,这可能行得通,我想如果没有其他可行的方法,我必须这样做,但我真的不想这样做。毕竟,从理论上讲,你可以输入Wingdings字体,得到一些完全不可读的东西!第二种可能性:除了我所知道的所有xna代码都适用于文件的编译版本(将其转换为二进制表示的xnb文件),从xna中获取动态comiplation完全是另一种方法。我想这将取决于库的用户是否能传递wingdings是的,我忘了它把它们编译成了xnb文件。好吧,我要一个spritefont。谢谢你的帮助!