_有身份的人

IFramework 框架学习笔记 2021 (一): LanguageModule(语言模块)

LanguageModule(语言模块)

附上IFramework 下载地址:IFramewrok
IFramework QQ交流群:782290296

该模块主要封装的是各国语言之间的切换,最核心的类是:
1.LanguageModule 语言模块类
2.DelegateLanguageObserver 语言观察者类
3.LanPair 语言字段类

首先看到LanPair类
在这里插入图片描述
我已经写上注释了,其实每一个LuaPair对象,就是封装了一段文字,并记录这段文字所属的语言和唯一标识,之后切换语言也是以该唯一标识进行切换的。

在看到DelegateLanguageObserver (语言观察者类)
在这里插入图片描述

其实很好理解,刚才说的LanPair类就是以文字字段为单位的,而这个DelegateLanguageObserver类是管理LanPair的唯一标识在每种语言之间的切换。

在这里插入图片描述
切换语言类型,主要逻辑为当该观察者未被释放或暂停时,执行该观察者切换逻辑,也就是对应的委托函数,并记录当前切换的语言类型

在这里插入图片描述
创建观察者对象时从模块中调用该方法进行初始化。并调用语言模块的绑定方法。该绑定方法下面会讲。

在这里插入图片描述
为观察者对象增加切换逻辑

最后看到LanguageModule(语言模块)
该类主要封装了对每个LanPair对象和观察者对象的管理。

在这里插入图片描述
这个类我们结合实际例子来看

在这里插入图片描述
首先这里实例化了两个LanPair,也就是语言字段。

在这里插入图片描述
在Awake函数中创建了语言模块,并加载了上面的两个LanPair对象。我们看模块的Load方法是怎么实现的。

在这里插入图片描述
就是将加载进来的LanPair相应的保存到上面提到的观察者列表,字段字典等等里面,应该不难理解。

再回到Awake中的下一句,调用了CreateDelegateObserver函数,顾名思义,就是创建观察者,我们进到里面去看

在这里插入图片描述
从对象池中取出一个观察者对象,并对该观察者进行初始化,这个初始化我们上面有提到,最后一步是调用语言模块的绑定方法Subscribe。
在这里插入图片描述
主要逻辑是将观察者对象存进字典,并去调用一次他的切换语言方法。这个方法上面有提到。
忘记的可以往上翻。然后返回观察者。
创建完了之后还去调用了Listen方法。继续进到listen方法

在这里插入图片描述
增加观察者逻辑,上面也说了。

在这里插入图片描述
在Update函数中,他去更改了语言模块中的languge属性。

在这里插入图片描述
当用户修改了该属性,也就是切换语言的时候,他会去执行Publish方法。

在这里插入图片描述
在这里插入图片描述
该方法的主要逻辑是,
遍历所有的观察者,并在LuaPair字典中找到该观察者对应的唯一标识对应的语言字段存不存在。存在即调用他的切换语言方法(该方法上面有提到,自己翻),若没有找到,即判断该观察者的默认语言是否存在,存在即使用默认语言对应的字段。

主要逻辑就是这些。不喜勿喷

posted on 2021-01-11 14:19  _有身份的人  阅读(72)  评论(0编辑  收藏  举报