今天把項目發佈到android上,發現無法發現系統語言。
程序中加語句 Debug.Log("Application.systemLanguage:" + Application.systemLanguage);
真機環境下的輸出是:Unknown
這是unity在4.3.0 4.3.1等版本的bug,4.3.3中修復,4.2應該也是正確的。
如果不換版本,需要用這個方法獲取系統語言:
<span style="font-family:Microsoft YaHei;font-size:14px;">// bugfix for Unity 4.3.3
public static SystemLanguage GetApplicationSystemLanguage()
{
#if UNITY_ANDROID && !UNITY_EDITOR
AndroidJavaClass localeClass = new AndroidJavaClass("java/util/Locale");
AndroidJavaObject defaultLocale = localeClass.CallStatic<AndroidJavaObject>("getDefault");
AndroidJavaObject usLocale = localeClass.GetStatic<AndroidJavaObject>("US");
string systemLanguage = defaultLocale.Call<string>("getDisplayLanguage", usLocale);
Debug.Log("systemLanguage:" + systemLanguage);
SystemLanguage code;
try {
code = (SystemLanguage)Enum.Parse(typeof(SystemLanguage), systemLanguage);
} catch {
code = SystemLanguage.Unknown;
}
#else
SystemLanguage code = Application.systemLanguage;
#endif
return code;
}</span>
bug上報地址:
4.3.3 release note:
http://unity3d.com/unity/whats-new/unity-4.3.3