【unity插件】Unity多语言插件I2 Localization简单使用

来源:互联网 发布:贝斯效果器软件 编辑:程序博客网 时间:2024/04/30 02:49

  分享一下Unity多语言插件I2 Localization的简单使用方法,以多语言文字为例,图片功能demo中也实现了。
  提前解释一下该插件中最重要的一个概念:Term。本质其实就是一个资源的ID,一个Term管理不同语言的相同资源。比如:一个Term名称为Test,它可以设置不同的资源类型,文字、图片、字体之类,Test可以依据你添加的语言设置不同语言下的资源。

一、首先导入插件包,目录是 子

 其中最主要的是Resources下面的那个预制体,它是项目的“语言管理器”,可以管理项目中的Term。
  注意:如果直接点击然后编辑预制体,则表示全局设置,即整个游戏的设置;如果把预制体I2Languages拖到场景中,则表示该场景的设置。它的Inspector面板中有个LanguageSouce组件,在这个组件上添加项目需要使用的语言:选择Language 页,填写语言名称,选择语言代码,如下图:
这里写图片描述

二、添加Term

1、步骤一中添加了语言,现在添加资源。选择Term页,点击 + ,填写Term的名称,点击CreateKey,如下(本人已经添加过4个):
这里写图片描述
2、点击刚才添加的Term名称,展开编辑选项,如下图。需要设置该Term对应的资源类型,可以有Text、Font、AudioClip、Sprite等等。下面会依据刚才添加的语言种类让你绑定 不同语言的对应资源,这样,一个Term就完成了。一个Term就是不同语言对应不同资源的同一个ID。
这里写图片描述

三、场景添加UI,并且本地化

  在场景中新建一个Text,在该Text上添加Localize脚本。注意一下三个箭头处:1、Target:指当前UI的类型,一般插件会自动选中;2、Term:这个UI需要的那个资源对应的Term,选中之后下面的资源随之改变;3、OpenSource:选择步骤一中拖的那个 I2Languages预制体。
这里写图片描述

四、静态改变语言

称为静态改变,意思是UI上的文字、图片都是游戏启动前设置好的。
1、在一个GameObject上添加SetLanguage脚本,为了方便,我直接将其加到I2Language预制体上。然后把预制体拖到LanguageSource上,如下
这里写图片描述
2、写测试脚本,为了方便,本人又把测试脚本添加到 I2Language预制体上了。。。写一个方法,传入的参数是步骤一中添加的语言名称的字符串,如下:

public void SetLanguage(string language){   setLanguage._Language = language;   setLanguage.ApplyLanguage();}

将该方法绑定到按钮点击事件,并传入语言名称即可,效果如下(但愿能动):
这里写图片描述

五:动态更改语言

假如在代码中我们将上面的文字改变了,并且再次切换语言,怎么保持同步?如下
1、添加新文字的Term,如下:
这里写图片描述
2、在代码中更改Text的文字时,不能去Text组件Text.text = “XXX”这么写了,不然不能动态转换语言,转换之后会Text会变为初始值。这么写:

  [SerializeField]  private Localize textLocalize;  textLocalize.SetItem("BehindTheMountain");

关联需要修改的Text的Localize组件,然后SetItem(),参数是Term名称。效果如下:
这里写图片描述
六、总结
以上是多语言文字的基本使用例子,demo中有图片的多语言例子,其他资源的方法类似,详细文档参考 http://www.inter-illusion.com/assets/I2LocalizationManual/I2LocalizationManual.html

【补充】【2017-1-11】

  我们刚才创建了很多Term,但是有时候我们需要得到那个Term对应的本地化之后的字符串,该怎么办。
  开发过Android的同学应该都知道,Android中对于string资源的使用采用一个ID对应一个的String,这个ID会生成在R文件中,编写代码是直接使用R.string.xxx来得到资源。而I2这个插件也使用这个思路。
  在LanguageSource的预制体上,找到Tool-Script,选中你需要生成ID的Term,一般就点All全选吧,然后点击底部的”Build Script with Selected Terms”,生成ID,生成的ID名和你的Term名称一样。
这里写图片描述
  打开ScriptLocalization脚本,你会发现里面都是一些静态字段,其实每个ID的Get最终都是调用前面的三个方法中的一个。如下图:
这里写图片描述
  之后我们就可以在代码中这样得到需要的本地化之后的字符串了:

ScriptLocalization.XXX;//XXX是你Term的ID

  本人没有试在代码中将语言改变前后,这样得到的是不是对应语言下的字符串。有需要的可以试试。还有,这种通过ID得到资源,似乎只适用字符串资源(因为本人写了Image的Term,但返回的都是String类型)。

最后附上demo地址

0 0
原创粉丝点击