游戏在设计之初采用的是简体中文,现在要支持英文和繁体,游戏内支持玩家切换语言,游戏内多语言主要包括代码中写死的文本,如弹框或错误码描述,预制件中写的脚本以及图片中的文本。不同类型的文本实现不一样,思路是一致的,首先生成本地配置描述(不同语言的文本描述),在运行时脚本根据语言类型读取配置数据。
如下所示:
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的实现如下:
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 太火爆:抖音海外版TikTok总下载量已超15亿次
- 6、如何获取配置中心的配置
- React降级配置及Ant Design配置
- vscode 配置eslint 开发vue的相关配置
- git commit 规范校验配置和版本发布配置
- hadoop地址配置、内存配置、守护进程设置、环境设置
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。