游戏在设计之初采用的是简体中文,现在要支持英文和繁体,游戏内支持玩家切换语言,游戏内多语言主要包括代码中写死的文本,如弹框或错误码描述,预制件中写的脚本以及图片中的文本。不同类型的文本实现不一样,思路是一致的,首先生成本地配置描述(不同语言的文本描述),在运行时脚本根据语言类型读取配置数据。
如下所示:
1、代码中写的文本提示:
翻译思路:在应用打包的过程中,生成本地数据库,根据数据库Key获取不同语言的文字描述,Key为命名空间_文件名_Num。
(1)扫描所有的CS文件,获取简体中文字符并生成表格:
生成后的Excel只包含文本ID和简体中文描述, 对应的英文和繁体文本由产品配置 。
(2)根据配置后的表格,分别生成对应语言的json文件;
分别将EXCEL表格中的三列存储为三个json文件,CodeChinese .json、CodeEnglish.json和CodeTraditionChinese.json,存储为其他类型的文件也可以,主要是为了方便。
(3)替换CS文件中所有的简体中文字符,改成查数据库方式:
在TextDatabase.Get内部会判断语言类型,读取相应的json文件,并根据索引返回对应文本。
2、预制件中写的文本:
翻译思路:遍历所有的prefab和scene,获取所有的Text并添加自定义脚本,生成本地数据库,脚本中传入数据库Key,Key为text组件在配置中的序号。
(1)遍历Text组件:
(2)获取Text组件中的文本信息,存入本地,并添加MultiLangTextExtend脚本,并传入Text在数据库中的编号Key:
存在一种特殊情况,部分中文的翻译在不同的地方会不一样,我们手动挂载MultiLangReplaceText脚本,并在脚本中手动给出新的文本描述。这些Text脚本就不需要挂载MultiLangTextExtend了。
替换脚本如下,参数为手动输入的:
MultiLangTextExtend根据TextID获取文本:
UIMultLangTextDatabase的实现与TextDatabase类似,生成一张Excel表格,产品配置好中英文翻译后,生成三个json文件。分别存储简体中文、英文和繁体中文数据。与代码翻译不同的是,预设中的命名会存在重复,因此采用编号来标识。
3、美术资源中的文本:
与Text翻译类似,Image的替换也可以采用同样的思路,不同的是,为了图集的打包以及Alpha分离,将每一个图片生成了一个预设,在加载的时候先加载预设然后再获取材质。
文件夹前缀标识图片是否需要生成替换资源,添加脚本。一个文件夹下生成一个json配置文件,主要存储预设路径和名称,原始资源路径名称作为json文件的标识。不同语言的图片名称是一样的,只是存储在不同的文件夹下面。
遍历过程中判断Image组件的AssetPath是否在指定的图片路径中,满足条件则添加MultiLangImageExtend脚本:
MultiLangImageExtend的实现如下:
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
The Book of CSS3
Peter Gasston / No Starch Press / 2011-5-13 / USD 34.95
CSS3 is the technology behind most of the eye-catching visuals on the Web today, but the official documentation can be dry and hard to follow. Luckily, The Book of CSS3 distills the heady technical la......一起来看看 《The Book of CSS3》 这本书的介绍吧!