MonoGame和XNA一样显示中文会报错,如图,所以需要对英文以外的其他字符做特殊处理。

image

下面提供让MonoGame支持中文显示的办法:

环境:Visual Studio 2015 , MonoGame版本3.5.1——这是个比较稳定的版本。推荐使用。

步骤:

1.新建【MonoGame Cotent Pipeline Extension Project】命名为:LocalizationPipeline,删除ContentImporter1.cs,ContentProcessor1.cs

image

 

2.复制项目两个文件到项目中LocalizedFontDescription.cs,LocalizedFontProcessor.cs

 

 

3.选中LocalizationPipeline项目点击右键选择Properties,.net 框架改成4.5

image

4.添加System.Xml.dll引用

image

5.编译生成LocalizationPipeline.dll复制备用,一般在LocalizationPipeline\bin\Debug中

image

6.新建MonoGame游戏项目,命名为:MonoGameDisplayChinese,以UWP项目为例

image

7.找到项目Content目录的Content.mgcb,双击打开它,选中Content右键【Add】【New Item】【SpriteFont Description】命名为defaultFont,在Content目录可以就找到defaultFont.spritefont文件。

image

接着选中Content.mgcb中Content,添加references ,引用LocalizationPipeline.dll

image

 

8.使用Visual Studio打开defaultFont.spritefont,修改XnaContent标签中的Asset的Type值为LocalizationPipeline.LocalizedFontDescription,

9.在MonoGameDisplayChinese新建增加strings.resw(UWP项目.resw,其他项目可以是.resx)

Name可以是任意名字,Value中可以存储使用到的任何中文字符

image

文件ResourceFiles标签到Asset节点中

image

 

注意:Resx的路径是相对Content目录的路径,前面加了..\,如果是UWP项目..\strings.resx改成..\strings.resw

10.回到MonoGameDisplayChinese项目,选中Content.mgcb,右键Open With,选择JSON Editor打开,任何文本编辑器都可以打开!

image

 

修改processor的值为LocalizedFontProcessor,保存关闭!

image

 

 

 

11.再次打开Content.mgcb,选中defaultFont.spritefont会发现Processor已经改变了。(GUI模式是没法改这个值的)

image

 

12.选中Content,找到Platform,修改成对应的平台如果是UWP就选择WindowsStoreApp

image

13.菜单栏【Build】点击【Build】或者是【Rebuild】,编译生成xnb文件。找到它,通常在Content.mgcb文件所在目录的bin目录里。

image

 

14.复制生成的defaultFont.xnb文件到MonoGameDisplayChinese项目的Content目录,修改Build Action类型为Content,输出目录设置为总是即Copy always

image

14.至此这个支持中文字体的xnb就做了,接着就可以使用中文了。

这个例子稍加修改,可以实现MonoGame的多语言。

上诉方法适用所有MonoGame版本包括3.5.1或者更高

如果你使用的是MonoGame3.5.1或之前的版本,感觉这个方法比较复杂(头都看晕了?!),本站还提供更加容易的支持中文的方法(如下):

https://www.xnadevelop.com/ios/monogame-character-support-simplification-tool/



如果您对C#游戏开发感兴趣,可以扫下面二维码加入我们的QQ群来一起学习交流

原创文章,转载请注明本文链接地址(违者必究):在MonoGame中使用中文