iPhone上如何侦测到系统的语言设定
来源:互联网 发布:欧洲难民问题知乎 编辑:程序博客网 时间:2024/05/18 06:15
Unity3D游戏引擎最大的优势就是跨平台,但除了跨平台之外,游戏能够同时支援多种语言就更完美了,在这方面,Unity也帮我们考虑到了,所以要判断使用者系统使用的语言是相当容易的,可惜的事,在iPhone的系统上却不是这么回事;所以在游戏中只能多个语言设定的功能让玩家自己设定要使用哪种语言,这样也是支援多语言环境,那么在iPhone上应该如何办到呢?
一般而言,要知道使用者的系统设定语言,只需要使用Application.systemLanguage就能得知,例如Application.systemLanguage==SystemLanguage.Chinese就帮玩家切换到中文版;如果Application.systemLanguage==SystemLanguage.English就切换到英文版,然而这种方法虽然使用在windows和mac上都没问题,但在iPhone上,Application.systemLanguage竟然是SystemLanguage.Unknown,不管把iPhone切换到任何语言或是地区都是同样的结果。
经过在网路上搜索,发现许多人也遇到相同的问题,解决的方式很多种,有些方式还蛮复杂的,有些方式只是治标,并不能很准确得知玩家使用的语言,经过测试,以下提供一个我个人觉得最简单直接又最根本解决的办法,就是透过ObjectiveC取得系统语言再储存下来给Unity读取出来判断,对于未研究过ObjectiveC的人,这方法好像有点难度,以下提供实作流程,照着做就能解决问题罗~
1.当Unity编译输出为iPhone应用程式完成之后,会开启Xcode,在此找出AppController.mm。
2.在-(id)initWithFrame:(CGRect)frame{...}的大括号中插入这句[[NSUserDefaultsstandardUserDefaults]setObject:[[NSLocalepreferredLanguages]objectAtIndex:0]forKey:@“YourLanguageKey”];
3.把以上这句代码的YourLanguageKey改为自己喜欢的字串,不改也成。
4.然后在Unity任意的Script中,只要呼叫PlayerPrefs.GetString(“YourLanguageKey”)就能取得代表语系的字串;en代表英文、zh-Hant代表中文繁体、zh-Hans代表中文简体。
步骤2的代码会在Awake()之前执行,所以我把PlayerPrefs.GetString(“YourLanguageKey”)放在Awake()中判断语系,并切换适当的语言环境给玩家;另外,也可在做这个判断之前使用if(Application.platform==RuntimePlatform.IPhonePlayer){...}来分辨目前的执行平台,毕竟只有在iPhone才需要这样特别处理。
- iPhone上如何侦测到系统的语言设定
- iPhone上如何侦测到系统的语言设定
- 系统设定工具与硬件侦测
- 系统设定工具(网络与打印机)与硬件侦测
- 第21章 系统设定工具与硬件侦测
- 系统设定工具(网络、打印机)与硬件侦测
- 鸟哥的Linux私房菜10.27 系统设定工具(网络与打印机)与硬件侦测
- 如何在iPhone应用上跳转到在AppStore上的评论页面
- 侦测隐藏进程的强文[上]
- 如何将xcode的应用程序安装到真正的iphone手机上
- 如何将网上下载的程序安装到自己的iphone上
- 如何将自己编译的系统移植到G1上
- 如何在android系统上运行C语言的程序
- iPhone上读取系统信箱的短信
- 如何使用xcode将应用安装到IPhone上
- 如何将你的浏览器窗口设定到指定分辨率
- iphone获取当前系统的语言
- iphone获取当前系统的语言
- 模式识别/机器学习/图像视频/ 常见概念科普
- 如何使用efi toolkit搭建编译efi app的环境
- Programming ASP.NET MVC-Fundamentals of ASP.NET MVC(七)Models
- eclipse tomcat部署完毕,在tomcatwebapps下却找不到项目文件夹
- poj 3660 Cow Contest
- iPhone上如何侦测到系统的语言设定
- Splunk
- Ensemble如何将外部数据源数据迁入cache数据库
- oracle 使用flashback(闪回)恢复误删除的数据 或 误删除的表
- Android访问第三方资源通用接口(自我整理)
- Quartz事物调度
- Android bootchart使用步骤
- Ubuntu下轻松建立你的内核驱动开发环境
- linux内核源码目录结构