unity3d 多语言 解决方案1——自定义本地文本

unity3d 多语言 解决方案1——自定义本地文本

from:http://momowing.diandian.com/

今天在学习packerpro这款插件的使用的时候留意到它里边使用到的多语言方案十分有趣,算是一种比较朴素但是实用的方法——通过自己编辑一个本地txt文本,将字段规范后按照语言需求读取出来,这更加像是通过unity在读取一个excel表格,于是这里整理一下贴上来跟大家品品。

这个是packerpro使用的自定义文本,可以注意到左侧为识别id,我们可以认为这是关键字,通过例如“mainSetting_setName”这个键,然后获取对应的语言情况下的值,比如现在是中文情况那么取得的就是“名称设定这个包装集的名称”。

然而第一行用于区分当前的语言识别,这里用了4种语言,我们可以假设这个文本是一个表格,通过简单的算法将他们保存在我们的数据表格中(编码中用的嵌套list),外部传入需要的key,程序去list中获取key对应的值,便是如此了,原理比较好理解,我们可以试试实现。

创建一个脚本,为它准备几个必要的方法:

为了方便外部脚本的调用,直接使用static方法(不知道够不够,唉~不够再加好了),方便其他项目移植调用什么的,接着准备一些必要的变量:

看起来很普通,其实比较变态的是那个cells,在嵌套的时候容易乱哈~注意看,初始化罗~:

这里从本地读取一个叫multilan的txt文本然后把其中的数据按照行列塞进我们的编码数据表,因为我不希望有人看了这篇文章还有疑问(好吧,我自己经常会这样),我再说一下这个txt文件要放在哪里:

在Assets文件夹下面直接创建一个名叫“Resources”的文件夹,接着创建一个名叫multilan的txt文本在里边就ok啦。

接着说说我们自定义的文本内容格式,注意到算法里面的列区分了么,用’\t(制表符,其实就是tab键)换句话说,自定义文本中的列也用tab间隔就哦了,当然您如果不喜欢用tab用别的都无所谓啦,自己改改喜欢的,修正编码就好。

看起来并不复杂吧, 不过这里还是要说几个注意点:

  1. id后面的语言定义要和枚举里面定义的一致哈
  2. 检查清楚最后一列后面是否还有制表符,不然读出来的数据有可能不正常的哦。

接着是设置语言的方法:

会不会太简单?

然后是获取内容了:

最后开始测试内容的获取:

说实话,这种方法还是有很多的不方便性,但是对于想要独立维护的本地多语言文本是不错的选择哦。

 

最后我把编码共享,ok!!!

http://pan.baidu.com/s/1ntyPPBb

你可能感兴趣的:(NGUI)