可通过修改manifest.json,在其中加入如下条目安装:
{
"com.github.fanhexin.easylocalization": "https://github.com/fanhexin/EasyLocalization.git#upm"
}EasyLocalization不对具体的多语言数据文件格式和加载方式做限制,使用者只需创建继承自抽象类DataProvider的实体子类,实现抽象方法。DataProvider本身继承自ScriptableObject,实现DataProvider的子类需要在工程内创建一份ScriptableObject资源文件,并拖入Localization资源文件的引用中。具体示例如下:
[CreateAssetMenu(fileName=nameof(TestDataProvider),menuName=nameof(TestDataProvider))]publicclassTestDataProvider:DataProvider{publicoverrideIEnumerable<string>Keys=>_dic[SystemLanguage.English.ToString()].Keys;publicoverrideIEnumerable<string>Languages{get{yieldreturnSystemLanguage.English.ToString();yieldreturnSystemLanguage.Chinese.ToString();}}publicoverridestringGetValue(stringlanguage,stringkey){return_dic[language][key];}[NonSerialized]privateDictionary<string,Dictionary<string,string>>_dic;privatevoidOnEnable(){_dic=newDictionary<string,Dictionary<string,string>>{["English"]=newDictionary<string,string>{{"TITLE_1","title_1"},{"TITLE_2","title_2"}},["Chinese"]=newDictionary<string,string>{{"TITLE_1","标题1"},{"TITLE_2","标题2"}}};}}在场景中通过UI > LocalizationText添加带有多语言功能的Text控件,其带有自定义的Inspector,可直接通过LocalizationKey选择所关联的字典Key。 如下图所示:
创建Localization的子类后,运行时可通过Localization.instance访问实例。Localization实现了Indexer,可通过[]语法直接查询。
stringvalue=Localization.instance["key值"];在切换语言时,需要设置Localization的language属性,对内部字典进行更新。更新结果会通过LocalizationText进行实时展示。
Localization.instance.language="Chinese";如在编辑器启动的状态下,多语言配置文件发生了更新,这时需要进行重新加载,以便LocalizationText Inspector上能显示新的Key或Value值。
可通过点击Localization资源文件Inspector上的Reload按钮实现。如下图:

