寫在開頭
? ??在上一篇文章中递递,我對(duì)框架的基本通信模塊和對(duì)事件的處理進(jìn)行了講解,而現(xiàn)在我又為框架加入了一些新的功能况褪,這篇文章將介紹這些功能通熄。
框架啟動(dòng)器
? ??在上篇文章中我們已經(jīng)搭建好了最基本的通信模塊,現(xiàn)在我們要每個(gè)Manager都運(yùn)行起來喉恋,實(shí)現(xiàn)各個(gè)Manager的通信沃饶。用普通的方法可能是將各個(gè)Manager都在制作場(chǎng)景時(shí)先掛載到一個(gè)物體上母廷,可是這樣的方法就要求每次都要修改場(chǎng)景轻黑,所以我采用了反射的方法來掛載我們所需要的Manager。
? ??反射能夠幫我們節(jié)省很多麻煩琴昆,比如對(duì)各個(gè)Manager的一些配置我們也可以寫一個(gè)配置文件對(duì)其進(jìn)行設(shè)置氓鄙,這將節(jié)省我們大量的修改和編譯時(shí)間,下面對(duì)框架反射的具體設(shè)置進(jìn)行講解业舍。
1. 配置文件
????首先我們通過一個(gè)json文件寫入我們的一些配置
? ? 在這個(gè)json文件中initmanager表示我們要在游戲開始時(shí)掛載的Manager抖拦,managername表示Manager的類名,managerId表示Manager的獨(dú)有ID用來做消息轉(zhuǎn)發(fā)時(shí)區(qū)別接收的對(duì)象使用舷暮,stepofManagerId表示一個(gè)Manager所能綁定的最大消息數(shù)态罪。
2.配置類
然后我們通過一個(gè)單例配置類來讀取配置文件信息
? ? 配置類通過JsonUtility類進(jìn)行轉(zhuǎn)換,把json信息轉(zhuǎn)化成類下面,然后把配置信息都存儲(chǔ)在GlobalConfig的單例類中复颈,之后就可以通過這個(gè)單例類獲取到配置信息。
? ? 用到的普通C#對(duì)象沥割,通過Serializable使其可序列化耗啦,能夠通過json構(gòu)建對(duì)象凿菩。
3.消息中心
? ? 在加載完配置信息后,我們就需要使用這些信息去初始化我們的Manager帜讲。
? ? 在消息中心中我們拿到要掛載的Manager信息衅谷,之后可以通過InitManager這個(gè)方法使用反射把所有需要的Manager的加載出來。消息中心還承擔(dān)著把不同Manager消息進(jìn)行發(fā)送的中繼器作用似将,所有Manager都將通過它與其他的Manager進(jìn)行通信获黔。
4.框架入口
? ? 最后我們通過一個(gè)框架入口把我們所需要初始化的對(duì)象一次性加載出來。
? ? 入口類負(fù)責(zé)框架的初始化操作在验,所有的Manager也都將掛載在FrameworkEntry所在的游戲物體上肢执。
結(jié)尾
? ? 這周因?yàn)楸容^忙所以沒有對(duì)框架進(jìn)行很多的開發(fā),爭(zhēng)取這一周能多寫一些東西译红,框架的開發(fā)還是任重而道遠(yuǎn)预茄。項(xiàng)目已上傳GitHub。項(xiàng)目地址