写在开头
在上一篇文章中,我对框架的基本通信模块和对事件的处理进行了讲解,而现在我又为框架加入了一些新的功能,这篇文章将介绍这些功能。
框架启动器
在上篇文章中我们已经搭建好了最基本的通信模块,现在我们要每个Manager都运行起来,实现各个Manager的通信。用普通的方法可能是将各个Manager都在制作场景时先挂载到一个物体上,可是这样的方法就要求每次都要修改场景,所以我采用了反射的方法来挂载我们所需要的Manager。
反射能够帮我们节省很多麻烦,比如对各个Manager的一些配置我们也可以写一个配置文件对其进行设置,这将节省我们大量的修改和编译时间,下面对框架反射的具体设置进行讲解。
1. 配置文件
首先我们通过一个json文件写入我们的一些配置
在这个json文件中initmanager表示我们要在游戏开始时挂载的Manager,managername表示Manager的类名,managerId表示Manager的独有ID用来做消息转发时区别接收的对象使用,stepofManagerId表示一个Manager所能绑定的最大消息数。
2.配置类
然后我们通过一个单例配置类来读取配置文件信息
配置类通过JsonUtility类进行转换,把json信息转化成类,然后把配置信息都存储在GlobalConfig的单例类中,之后就可以通过这个单例类获取到配置信息。
用到的普通C#对象,通过Serializable使其可序列化,能够通过json构建对象。
3.消息中心
在加载完配置信息后,我们就需要使用这些信息去初始化我们的Manager。
在消息中心中我们拿到要挂载的Manager信息,之后可以通过InitManager这个方法使用反射把所有需要的Manager的加载出来。消息中心还承担着把不同Manager消息进行发送的中继器作用,所有Manager都将通过它与其他的Manager进行通信。
4.框架入口
最后我们通过一个框架入口把我们所需要初始化的对象一次性加载出来。
入口类负责框架的初始化操作,所有的Manager也都将挂载在FrameworkEntry所在的游戏物体上。
结尾
这周因为比较忙所以没有对框架进行很多的开发,争取这一周能多写一些东西,框架的开发还是任重而道远。项目已上传GitHub。项目地址