大家好,我是阿赵。
  在使用Unity引擎做多语言的游戏时,很有可能需要根据用户的手机或者电脑的当前语言来设置游戏的默认语言。
  Unity的API里面默认就有可以获取系统语言的方法:

Application.systemLanguage

Unity的API例子:

using UnityEngine;

public class Example : MonoBehaviour
{
    void Start()
    {
        //This outputs what language your system is in
        Debug.Log("This system is in " + Application.systemLanguage);
    }
}

这个API返回的值类型是SystemLanguage,包含了很多语言,我对返回值做一个翻译,方便查看:
Afrikaans 南非荷兰语
Arabic 阿拉伯语
Basque 巴斯克语
Belarusian 白俄罗斯语
Bulgarian 保加利亚人
Catalan 加泰罗尼亚语
Chinese 中文
Czech 捷克语
Danish 丹麦语
Dutch 荷兰语
English 英语
Estonian 爱沙尼亚语
Faroese 法罗语
Finnish 芬兰语
French 法语
German 德语
Greek 希腊语
Hebrew 希伯来语
Icelandic 冰岛语
Indonesian 印度尼西亚语
Italian 意大利语
Japanese 日语
Korean 韩语
Latvian 拉脱维亚语
Lithuanian 立陶宛语
Norwegian 挪威语
Polish 波兰语
Portuguese 葡萄牙语
Romanian 罗马尼亚语
Russian 俄语
SerboCroatian 塞尔维亚克罗地亚语
Slovak 斯洛伐克语
Slovenian 斯洛文尼亚语
Spanish 西班牙语
Swedish 瑞典语
Thai 泰语
Turkish 土耳其语
Ukrainian 乌克兰语
Vietnamese 越南语
ChineseSimplified 简体中文
ChineseTraditional 繁体中文
Unknown 未知的
Hungarian 匈牙利语

  我使用安卓模拟器测试了一下,有一个值得注意的地方:
Unity获取系统语言-LMLPHP

  在手机的语言设置里面,中文有很多种,不仅分为繁体和简体,还有各个地区。
其中:
中文(中国)
简体中文(中国)
简体中文(新加坡)

这三个获取到的是ChineseSimplified

简体中文(澳门)
繁体中文(澳门)
简体中文(香港)
繁体中文(香港)
繁体中文(台湾)

这几个获取到的是ChineseTraditional

  另外一个需要注意的地方是,这个API获得的语言似乎是应用启动时的语言,比如我的手机一开始是简体中文,进到游戏之后获取一次,是ChineseSimplified。我退游戏到桌面,然后去设置里面改系统语言,再直接回到游戏(没有重启游戏),这个情况下,获取的结果不会变,还是ChineseSimplified。

01-12 07:12