原理:

将相关的中文字体导入到Asset目录下,Unity自动将你导入的所有中文字体转换成一张字体贴图,并生成一个Unity字体。然后,就可以在GUI SKin\GUI Style引用生成的Unity字体来显示中文了。

步骤:

1.打开一个项目,创建一个场景。

2.在菜单栏中,创建一个空的GameObject,改名为ChineseFontObject,这个对象作为GUI的容器来使用。

3.在Project中创建一个GUI Skin,改名为ChineseFontSkin。

4.在Inspector对上面创建的ChineseFontSkin进行一些小设置,例如将Button中Normal的Text Color改成黄色/将Label中Normal的Text Color改成绿色。

5.通过GameObject菜单创建GUI Text和GUI Texture两个GUI对象,其他大部分GUI通过脚本的形式创建。

6.用脚本创建一个Label和一个Button,核心代码如下:

public GUISkin mySkin;

void OnGUI(){

if(mySkin) GUI.skin = mySkin;

GUI.Label(new Rect(200,400,200,200),"hello,你今天吃了切糕吗?——我没有!");

GUI.Button(new Rect(200,600,100,400),"买一块吧");

}


 

7.把上面脚本拖放到ChineseFontObject对象上,把ChineseFontSkin托到对象的mySkin里去。

8.运行游戏,只看到英文,看不到中文了,因为我们这个时候还没有导入中文字体。

9.导入中文字体:

一:在C盘的Windows文件夹目录下,寻找Font目录,在里面选择一种中文字体(例如微软雅黑)。

二:把上面选择的中文字体,拷贝到Unity项目的Assets里面的GUI目录下,此时Unity处于不可操作状态。

三:导入的时间比较长,同时Unity自动生成字体贴图和字体定义。

四:导入完毕后,在Assets的GUI目录下多了一个(msyh)的字体。

五:在ChineseFontSkin中,把Font改为刚刚导入的字体(msyh),再运行游戏,就能显示中文了。

10.最后,解析一下导入中文的时候,Unity自动为字体生成一个字体贴图(font texture)以及一个字体材质(font material)。

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐