我想在我的Toolkit游戏中使用以下代码绘制一些文本:
SpriteFont spriteFont;
Vector2 pointStringPosition = new Vector2(5, 5);
int intPoints = 0;
//...
Content.RootDirectory = "Content";
//...
spriteFont = Content.Load<SpriteFont>("Schrift.xml");
//...
spriteBatch.DrawString(spriteFont, intPoints.ToString(), pointStringPosition, Color.DarkOrange);
Schrift.xml位于Content文件夹中,构成了:
<?xml version="1.0" encoding="utf-8" ?>
<TkFont>
<FontName>Arial</FontName>
<Size>13</Size>
<Spacing>0</Spacing>
<LineSpacing>0</LineSpacing>
<UseKerning>false</UseKerning>
<Format>Auto</Format>
<CharacterRegions>
<CharacterRegion>
<Start>32</Start>
<End>127</End>
</CharacterRegion>
</CharacterRegions>
<DefaultCharacter>32</DefaultCharacter>
<Style>Regular</Style>
<NoPremultiply>false</NoPremultiply>
</TkFont>
如果.csproj构成了这个:
<ToolkitFont Include="Content\Schrift.xml">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</ToolkitFont>
抛出AssetNotFoundException。
如果.csproj构成了这个:
<Content Include="Content\Schrift.xml">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
它说:
注册的ContentReader类型 [SharpDX.Toolkit.Graphics.SpriteFontContentReader]无法加载 来自文件的[SharpDX.Toolkit.Graphics.SpriteFont]类型的内容 [Schrift.xml]。
如果.csproj构成了这个:
<ToolkitFont Include="Content\Schrift.xml">
<Link>Content\Schrift.xml</Link>
</ToolkitFont>
我收到错误,因为Link元素无效。
有什么问题?或者使用SharpDX绘制文本有更好/更容易的机会吗?
答案 0 :(得分:1)
SharpDX Toolkit不使用XNA文件格式,而是使用custom YAML format。查看samples,特别是SpriteFontApp
答案 1 :(得分:1)
我遇到了同样的问题,但这是因为我没有把Build Action放到&#34; TookitFont&#34;
所以在代码没有.xml扩展名
并在文件属性中:
或者在.csproj文件中:
<ToolkitFont Include="Content\Arial16.xml">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</ToolkitFont>