前面是文字,图片在文章后面统一给出。。。不习惯的话,就直接看图片吧,纯属无奈之举
3.5 为游戏菜单添加本地化系统——语言选择
直到此时,游戏主菜单的界面已经基本上完成了,所欠缺的不过是本节将要添加的语言选择设置。它只是一个弹出列表控件,却掌管着游戏中文本信息切换的功能,如图3-所示。
图3- 语言选择设置
3.5.1 添加本地化文件
要添加本地化的系统,就一定需要添加本地化的文件,这类文本文件的后缀名是.txt,并且每种语言都需要一个.txt文件。本节要添加的游戏示例,提供给了玩家对两种语言的选择,分别是Chinese和English,因此要为Unity的游戏项目导入两个文本文件:Chinese.txt和English.txt,如图3-所示。
图3- 在Project视图里查看导入的两个文本文件
提示:至于文本内容的编辑,读者可以选择自己喜欢的文本编辑器,而本节将使用Unity自带的编辑器MonoDevelop。
3.5.2 添加本地化组件
要为游戏主菜单界面添加本地化系统,还需要添加一个本地化组件,即为Hierarchy视图里的GameManager添加Localization(Script)组件,方法是单击Component|NGUI|Internal|Localization命令,并设置此组件的下列属性,如图3-所示。
q Starting Language:English;
q Element 0:Chinese;
q Element 1:English;
图3- Localization(Script)组件属性设置
3.5.3 添加语言选择功能
要在游戏主菜单界面上添加的语言选择功能,读者已经在本节开头的部分见过了,本小节就来切实的完成这一界面元素的添加,具体的操作步骤如下:
(1)选中Difficulty的子对象Popup,完成下列设置:
q 复选UIPopup list(Script)组件的Localized属性;
q 将Popup的子对象Label,重命名为CurrentDifficulty;
(2)拷贝Difficulty对象,重命名为Language,选中它的子对象Background,完成下列设置:
q UIAnchor(Script)组件Pixel Offset:(420,-90);
(3)选中Language子对象Label,完成下列设置:
q Label中的文本:[AAFFFF]Language
(4)选中Language子对象Popup,完成下列UIPopup List(Script)组件属性的设置:
q Options设置,如图3-所示。
图3- Options属性设置
q Position:Below;
q 复选Localized属性;
步骤(2)、(3)和(4)的操作效果如图3-所示。即在游戏主菜单右侧靠下的位置处,添加了语言选择功能。
图3- 步骤(2)、(3)和(4)的操作效果展示
(5)修改Popup的子对象Label的名称为CurrentLanguage。并为它添加Language Selection(Script)组件,方法是单击Component|NGUI|Interaction|LanguageSelection命令,此组件下没有任何属性,如图3-所示,却是将玩家的操作付诸实现的,连接本地化系统的枢纽。
图3- Language Selection(Script)组件
3.5.4 本地化的实现——修改Label的文本内容
本地化全部UI界面的工作量比较大,本小节先以本地化“MAIN MENU”为例,然后再说明批量操作的方法。具体的操作步骤如下:
(1)选择Title子对象Label,为其添加UILocalize(Script)组件,方法是单击Component|NGUI|UI|Localize命令,并设置此组件的下列属性,如图3-所示。
q Key:MainMenu;
图3- UILocalize(Script)组件属性设置
q 编辑English.txt文本文件的内容,如图3-所示。
图3- 编辑English.txt文本文件的内容
q 编辑Chinese.txt文本文件的内容,如图3-所示。
图3- 编辑Chinese.txt文本文件的内容
提示:直接使用中文的话,Unity的Game视图上不会输出任何文本,因此这里使用了汉语拼音。
(2)运行游戏,默认使用的是英语,将其切换为汉语拼音,效果如图3-所示。
图3- 左边是英语,右边是汉语拼音,即本地化的效果展示
(3)接下来读者可以使用同样的方法,修改UI里所有剩余的Label文本内容。即先为其添加UILocalize(Script)组件,然后设置key属性,最后将key添加到English.txt和Chinese.txt中即可。这样的操作,工作量确实很大,下面说明批量操作的方法。
(4)在Hierarchy视图的搜索栏里输入“Label”,即可检索到当前Hierarchy视图里的所有label控件,无论它被修改成了什么名字,如图3-所示。
图3- 在Hierarchy视图检索所有label控件
(5)选中除指定为预置资源以外的所有Label,然后单击Component|NGUI|UI|Localize命令,即可为所有被选中的Label对象添加UILocalize(Script)组件。
提示:做演示时,已经为Title的子对象Label添加了UILocalize(Script)组件,步骤(5)的操作会令Label重复添加UILocalize(Script)组件,因此需要将其移除。
(6)接下来读者就该为所有Label的UILocalize(Script)组件属性key设置值,然后在English.txt和Chinese.txt文本中添加对应的文本内容即可。如图3-所示,是Chinese.txt文本中的所有内容;如图3-所示,是English.txt文本中的所有内容。
图3- Chinese.txt文本文件中的所有内容
提示:17~19行的内容应该在一行内书写,截图的时候考虑到内容太长不方便,所以才将其分成多行。
图3- English.txt文本文件中的所有内容
提示:17~19行同样应该写成一行。
q 当需要本地化的内容在游戏UI中,是以多行显示时,读者应该使用“\n”表示换行,如图3-所示。
图3- 本地化多行显示的文本
q 对于Popup控件,前面的操作复选了其UIPopup List(Script)组件里的Localzed属性,因此弹出列表各选项文本本地化时,Key应该与UIPopup List(Script)组件里的Options属性一致,如图3-所示。
图3- 本地化弹出列表各选项的文本
q 对于在Project视图里,被指定为预置资源的Label也需要完成本地化,方法与在Hierarchy视图里为各游戏对象本地化一致,如图3-所示。
图3- 本地化被指定为预置资源的对象
(7)完成本地化的所有设置以后,就可以运行游戏了。本地化的语言是英语时,效果如图3-所示;本地化的语言是汉语拼音时,效果如图3-所示。
图3- 英语的本地化效果展示
图3- 汉语拼音的本地化效果展示
提示:Unity会自动记录玩家在关闭游戏前,对本地化语言的选择,然后当玩家再次运行同一个游戏的时候,就直接使用记录的本地化语言。