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

今天在学习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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值