简介
Blockman Go 的玩家来自世界各地不同的文化背景,讲不同的语言。有效地为您的游戏项目适配多种语言可确保所有玩家都能理解并更沉浸地享受您的游戏项目。
配置方法
SandMod 没有自带的多语言配置功能,但是您可以使用 CSV 配置游戏项目的多语言。
CSV 配置
CSV (文件后缀是 .csv)是一种表格方式记录数据的资产,通常第一行包含表格的列标签,随后的每一行数据代表表格的一行,逗号分隔每行中的每个单元格。目前主流的表格查看、编辑工具(如 Google Sheet,Microsoft Excel)都支持以表格的方式查看和编辑 CSV 文件,这将有利于您高效编辑游戏的多语言内容。
一般情况下,多语言配置表第一列是显示内容的 索引(Key),后续每一列表示对应语言环境下该索引的翻译内容,如以下案例:
【Game_Multi_language001.png】
某个游戏项目的多语言配置表案例。
CAUTION
在 CSV 资产导入游戏项目前,请确保该 CSV 的编码格式为 UTF-8,否则部分语言将无法被引擎正确识别。
CSV 资产可从 SandMod 的项目窗口导入游戏项目,具体导入方法请参阅 导入资产 章节。
并且您可以使用代码 Resources.Load(Type,ID) 通过在 CSV 资产的上下文菜单中获取的 资源 ID(Asset ID)将 CSV 资产以 CSV 类型动态读取。
SandMod 为您提供了在 CSV 中根据行数和列数精准定位表格内容的功能,具体可以参阅 API 文档 CSV.GetItem(row, col) 相关的内容,您可以通过遍历该表格,根据索引读取该词条对应语言环境下的译文,或者您也可以用其他更便利的方式实现这一逻辑。
获取玩家语言
如果您希望自动获取玩家的多语言信息,您可以通过玩家平台信息获取对应玩家的 多语言标签(Mult-Language Tag),获取玩家多语言标签的代码格式如下:
class PlayerLanguage extends Component {
/*
编辑自定义公共方法;
*确保在成功获取玩家 游戏玩家 ID(User ID,注:不是平台 ID)后再调用此方法;
*此处实例忽略玩家 游戏玩家 ID(User ID)的获取方式,假设通过其他脚本获取并通过公共方法传递到此脚本;
*/
public GetPlayerLanTag(PlayerUserID:string): void {
/*
根据玩家 游戏玩家 ID(User ID)通过 SDK 获取玩家信息;
*/
SDKs.Invoke("BLOCKMAN::PLATFORM::USERDETAIL",PlayerUserID).then((res:SDKResult)=>{
//对 SDK 返回的玩家信息进行解析;
let playerDataJson:JSON = JSON.parse(res.message);
//根据 SDK 返回的玩家信息获取玩家多语言标签,并保存在命名为 playerLangTag 的变量中;
let playerLangTag:string = playerDataJson["data"][PlayerUserID]["language"];
//此处编辑获取到玩家多语言标签后的相关逻辑;
});
};
}NOTE
值得注意的是,获取玩家信息前请确保游戏项目已经连接服务器,且获取玩家信息的代码(上述案例)也需要编辑在 客户端 场景引用的脚本中。如果您想了解玩家数据的格式和具体获取步骤的意义,请参阅 获取玩家信息 章节。
您可以根据玩家的多语言标签确定该玩家在 Blockman Go 平台使用的语言环境,Blockman Go 平台支持的多语言类型和对应标签关系如下:
| 标签 | 描述 |
| zh | 中文,Blockman Go 平台不会区分简体中文和繁体中文。 |
| en | 英文,Blockman Go 平台不会区分英式英文和美式英文。 |
| de | 德语。 |
| fr | 法语。 |
| id | 印度尼西亚语。 |
| it | 意大利语。 |
| ja | 日语。 |
| ko | 韩语。 |
| ru | 俄语。 |
| es | 西班牙语,Blockman Go 平台不会区分欧洲西班牙语和拉美西班牙语。 |
| pt | 葡萄牙语,Blockman Go 平台不会区分欧洲葡萄牙语和巴西葡萄牙语。 |
| th | 泰国语。 |
| vi | 越南语。 |
| pl | 波兰语。 |
| tr | 土耳其语。 |
| uk | 乌克兰语。 |
| hi | 印地语。 |
