找回密码
 立即注册
查看: 5319|回复: 77

[手机] iPhone上如何侦测到系统的语言设定

[复制链接]
发表于 2013-4-24 10:14 | 显示全部楼层 |阅读模式
资源信息 Tutorial Information
教程名称: iPhone上如何侦测到系统的语言设定(发帖教程)
适用引擎:   (适用引擎,为空默认为Unity)
教程语种: 中文
教程等级: 1
教程格式: 文档(请用IE9以上浏览器访问本版块)
教程作者: 转载自互联网 (如有问题请短消息联系作者或发表回复)
下载地址: (兑换积分)
点击查看原图
美丽分割线
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的人,这方法好像有点难度,以下提供实作流程,照着做就能解决问题罗~unity3d教程手册

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才需要这样特别处理。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2013-5-4 23:43 | 显示全部楼层
早些时候需要这么获取系统语言,但是现在已经不需要了,直接就可以获取到系统语言了。
发表于 2017-2-10 18:41 | 显示全部楼层
很不错
发表于 2017-2-10 18:50 | 显示全部楼层
楼主是超人
发表于 2017-2-10 19:02 | 显示全部楼层
顶顶多好
发表于 2017-2-10 18:15 | 显示全部楼层
很好哦
发表于 2017-2-10 18:25 | 显示全部楼层
不错不错
发表于 2017-4-23 19:28 | 显示全部楼层
很不错
发表于 2017-4-23 20:14 | 显示全部楼层
楼主是超人
发表于 2017-4-23 20:02 | 显示全部楼层
好帖就是要顶
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-4-27 20:29 , Processed in 0.782318 second(s), 32 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表