unity4.3 Application.systemLanguage在android返回Unknow的解決辦法

今天把項目發佈到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上報地址:

http://forum.unity3d.com/threads/unity-4-3-0f4-application-systemlanguage-returns-unknown-on-android.211227/

4.3.3 release note:

http://unity3d.com/unity/whats-new/unity-4.3.3


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章