找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1783|回复: 0

[新教程]客户端字库制作指南

[复制链接]
发表于 2025-1-2 13:30:22 | 显示全部楼层 |阅读模式
本帖最后由 祂的名字 于 2025-1-5 16:48 编辑

测试效果如图



测试文件:
链接: https://pan.baidu.com/s/1U1VlyUf4Ye97TwXTG6TpIA?pwd=9hbg

一、阅读monogame的官方文档
这很重要,遇到问题从这里找.
https://docs.monogame.net/articles/getting_started/index.html


二、安装 .NET 8 SDK
建议下载dotnet-install脚本安装. 完成后可以在Powershell或者cmd中使用通过"dotnet --version"命令来确认.
https://dotnet.microsoft.com/en-us/download/dotnet/8.0
https://dotnet.microsoft.com/download/dotnet/scripts/v1/dotnet-install.ps1

三、创建MonoGame项目以及安装MGCB Editor

VS Code示例:

1.在VS Code中,按下键盘Ctrl + `打开终端窗口输入

dotnet new installMonoGame.Templates.CSharp 安装MonoGame 模板

2.添加扩展:
C# Dev KitMonoGame Content Builder (Editor)MonoGame for VSCode
3.打开一个空文件夹,在终端窗口输入

dotnet new mgdesktopgl 创建Monogame项目


等待创建完成后右击Content中的Content.mgcb,选择Open in MGCB Editor


Visual Studio 2022示例:
1.确认包含必须的工作负载:Net desktop development(.Net桌面开发)
2.打开VisualStudio 2022选择继续但无需代码,通过控制台运行以下命令安装MonoGame模板

  dotnet new install MonoGame.Templates.CSharp
3.打开扩展 -> 管理扩展,搜索MonoGame


  MonoGame Framework C# projecttemplates
选择安装后关闭程序等待安装界面,安装完成后重新打开Visual Studio 2022

4.创建一个MonoGameWindows Desktop Application项目

按提示创建完成后,双击Content中的Content.mgcb
默认应该会使用MGCB Editor打开.如果并没有,你需要检查扩展,以及其他步骤是否正确,确认无误的话尝试用以下命令打开
dotnet tool install -g dotnet-mgcb-editor
dotnet tool restore
dotnet mgcb-editor

四、使用.spritefont文件构建.xnb

在MGCB Editor中右击Content选择Add,新建或者添加一份字体文件 SpriteFont Description

修改.spritefont,安装对应的字体或者将字体文件放到.spritefont所在的目录下,字体推荐阅读enderseven的相关教程

准备完成后,右击.spritefont,选择Rebuild开始构建即可

五、.spritefont模板

现在可以构建更加完整的字库了(虽然文件体积略大了一点点…但构建时间基本可以按秒算

  1. <?xml version="1.0" encoding="utf-8"?>

  2. <XnaContent xmlns:Graphics="Microsoft.Xna.Framework.Content.Pipeline.Graphics">
  3. <Asset Type="Graphics:FontDescription">

  4. <FontName>unifont-16.0.02</FontName>
  5.   <!--字体名称, 拷贝字体文件名。-->
  6. <Size>12</Size>
  7.   <!--字体大小, 根据效果调整, 超出一定范围客户端会崩溃。-->
  8. <Spacing>1</Spacing>
  9.   <!--字体间距, 修改此值可以更改字符之间的间距量。-->
  10. <UseKerning>false</UseKerning>
  11.   <!--是否读取间距true/false。但我如果设置为true, 间距会出错, 搞不懂。-->
  12. <Style>Regular</Style>
  13.   <!--Style控制字体的样式。有效条目为"Regular"(常规)、"Bold"(粗体)、"Italic"(斜体)以及"Bold, Italic"(粗斜体),且区分大小写。-->
  14. <DefaultCharacter>?</DefaultCharacter>
  15.   <!-- 无法识别的默认字符 -->
  16.   <CharacterRegions>
  17.     <!-- ASCII 基本字符:包括空格、数字、大小写英文字母和常用符号 -->
  18.     <CharacterRegion>
  19.       <Start>&#x0020;</Start> <!-- 空格 -->
  20.       <End>&#x007E;</End>   <!-- ~ 符号 -->
  21.     </CharacterRegion>
  22.    
  23.     <!-- 常见标点符号 -->
  24.     <CharacterRegion>
  25.       <Start>&#x2000;</Start> <!-- 一些通用标点符号 -->
  26.       <End>&#x206F;</End>
  27.     </CharacterRegion>
  28.    
  29.     <!-- CJK 符号和标点 -->
  30.     <CharacterRegion>
  31.       <Start>&#x3000;</Start> <!-- 中文全角空格 -->
  32.       <End>&#x303F;</End>   <!-- CJK 范围的标点符号 -->
  33.     </CharacterRegion>

  34.     <!-- 常用汉字:基本汉字范围 -->
  35.     <CharacterRegion>
  36.       <Start>&#x4E00;</Start> <!-- 第一个常用汉字“一” -->
  37.       <End>&#x9FFF;</End>   <!-- 最后一个常用汉字 -->
  38.     </CharacterRegion>
  39.    
  40.     <!-- 以下是一些可能不常用的汉字和符号,可以根据需求选择是否启用 -->
  41.    
  42.     <!-- 汉字扩展 A 区:不常见的汉字 -->
  43.     <!-- 如果游戏不需要显示少数民族字符或历史汉字,可以去掉这一段 -->
  44.     <CharacterRegion>
  45.       <Start>&#x3400;</Start>
  46.       <End>&#x4DBF;</End>
  47.     </CharacterRegion>
  48.    
  49.     <!-- 半角和全角字符:这些字符通常用于特殊的排版或字符转换 -->
  50.     <!-- 如果不需要全角字符或一些特殊符号,可以去掉这一段 -->
  51.     <CharacterRegion>
  52.       <Start>&#xFF00;</Start> <!-- 全角字符,如全角标点、英文字母和数字 -->
  53.       <End>&#xFFEF;</End>
  54.     </CharacterRegion>
  55.    
  56.     <!-- 拉丁补充字符:包括一些额外的常用字符,通常用于西欧语言 -->
  57.     <!-- 如果只使用中文字符和标点,可以去掉这一段 -->
  58.     <CharacterRegion>
  59.       <Start>&#x00A0;</Start> <!-- 不换行空格 -->
  60.       <End>&#x00FF;</End>   <!-- ÿ 字符 -->
  61.     </CharacterRegion>
  62.    
  63.     <!-- 如果你只需要常见汉字和英文字符,可以将以上部分注释掉,加载更小的字符集 -->
  64.    
  65.   </CharacterRegions>
  66. </Asset>
  67. </XnaContent>
复制代码

六、可能存在的问题

1. 构建失败,提示********

请把你的字体文件*.otf *.ttf,放到.spritefont所在的目录下,复制该文件的名称(不加扩展名)

打开.spritefont文件, <FontName>粘贴</FontName>再重新构建
如果仍然失败,观察一下Rebuild选项是否在第三位?如果在倒数第三位那失败就很正常了,我在复现时直接打开MGCB Editor(没错我想偷懒),就存在这个问题,请按照流程在VS Code或者VisualStudio 2022中打开

如果依然失败,额…换个字体试试,或者万能的重启

2. 控制台或者终端运行dotnet指令报错

重新安装 .NET 8 SDK,建议下载dotnet-install脚本,右键使用PowerShell安装

https://dotnet.microsoft.com/download/dotnet/scripts/v1/dotnet-install.ps1

3. Visual Studio 2022的控制台中如果显示乱码,可以运行以下命令试一试
[Console]::OutputEncoding =[System.Text.Encoding]::UTF8

4. VSCode中没有Open inMGCB Editor 选项

请按要求添加所有拓展:
C# DevKit 、 MonoGame Content Builder (Editor)、 MonoGamefor VSCode







本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×

评分

参与人数 2DIY币 +2 收起 理由
白羽鸽 + 1 质量高超
Noble_Fish + 1 赞美

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|Archiver|手机版|管理员邮箱|红警DIY论坛 |网站地图

GMT+8, 2026-4-5 22:25 , Processed in 0.072164 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表