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字典中找到该观察者对应的唯一标识对应的语言字段存不存在。存在即调用他的切换语言方法(该方法上面有提到,自己翻),若没有找到,即判断该观察者的默认语言是否存在,存在即使用默认语言对应的字段。
主要逻辑就是这些。不喜勿喷