SpriteFont
高级 程序员
@'Stride.Graphics.SpriteFont' 类是绘制文本的便捷方式。它与 @'Stride.Graphics.SpriteBatch' 类配合使用。
Note
你需要将所有自定义代码放在自定义场景渲染器中,才能将其纳入组合。
加载 SpriteFont
字体资产编译后,可以使用 @'Stride.Core.Serialization.Contents.ContentManager' 将其加载为 @'Stride.Graphics.SpriteFont' 实例。它包含显示文本所需的所有选项(位图、字距调整、行距等)。
**代码:**将 SpriteFont 作为资产加载
var myFont = Content.Load<SpriteFont>("MyFont");
**代码:**加载系统字体
SpriteFont myFont;
protected override void InitializeCore()
{
base.InitializeCore();
// 在 FontSystem 中将系统字体注册为 Arial
if(myFont is null) myFont = InitializeFont();
}
private SpriteFont InitializeFont()
{
var _fontSystem = Services.GetService<FontSystem>();
_fontSystem?.RuntimeFonts.RegisterFont("Arial", Path.Combine(
Environment.GetFolderPath(Environment.SpecialFolder.Fonts), "arial.ttf"));
return _fontSystem?.LoadRuntimeFont("Arial", defaultSize: 12f);
}
在屏幕上书写文本
字体加载后,你就可以用 @'Stride.Graphics.SpriteBatch' 显示任意文本了。@'Stride.Graphics.SpriteBatch.DrawString*' 方法执行绘制。有关 SpriteBatch 的更多信息,请参阅 SpriteBatch 页面。
**代码:**书写文本
// 创建 SpriteBatch
var spriteBatch = new SpriteBatch(GraphicsDevice);
// 别忘了 Begin
spriteBatch.Begin(GraphicsContext);
// 从屏幕中心以红色绘制文本 "Helloworld!"
spriteBatch.DrawString(myFont, "Helloworld!", new Vector2(0.5, 0.5), Color.Red);
// 别忘了 End
spriteBatch.End();
各种重载允许你指定文本的方向、缩放、深度、原点等。你还可以对文本应用一些 @'Stride.Graphics.SpriteEffects':
- None
- FlipHorizontally
- FlipVertically
- FlipBoth
**代码:**高级文本绘制
// 从屏幕中心以红色倒置绘制文本 "Hello world!"
spriteBatch.DrawString(myFont, "Hello world!", new Vector2(0.5, 0.5), Color.Red, 0, new Vector2(0, 0), new Vector2(1,1), SpriteEffects.FlipVertically, 0);