事件多搀,數(shù)據(jù),視圖的交互(框架搭建)

結(jié)構(gòu)圖

結(jié)構(gòu)圖

青色:輸入

玩家灾部,AI或其他輸入康铭。

綠色:控制器

controller 對(duì)輸入做出反應(yīng)并通知dataManager,controller 由controllerManager 進(jìn)行管理?

橙色:數(shù)據(jù)

DataManager 接收服務(wù)器和controller的消息并更新data赌髓,data發(fā)生變化時(shí)通知監(jiān)聽者从藤。

藍(lán)色:視圖

view監(jiān)聽數(shù)據(jù)變化,并刷新锁蠕。view 由ViewManager進(jìn)行管理夷野。

紫色:服務(wù)器

接受來自dataManager 的數(shù)據(jù),并且通知DataManager 數(shù)據(jù)發(fā)生變化(沒錯(cuò)荣倾,這個(gè)是雙向操作)悯搔。控制RootManager

粉色:總控制器

關(guān)鍵時(shí)刻的開關(guān),直接接收服務(wù)器消息舌仍,控制所有Manager妒貌。

注意:一個(gè)游戲可能有多個(gè)模塊。每個(gè)模塊都應(yīng)該有自己的Manager 而不是整個(gè)游戲就4個(gè)Manager

流程圖


流程圖

綠色的輸入的消息铸豁,紅色的是控制灌曙,藍(lán)色的是監(jiān)聽(view主動(dòng)監(jiān)聽data所以箭頭由view指向data)

注意剪頭方向(viewManager 是監(jiān)聽的ViewData的數(shù)據(jù)控制view的,而不是由controller通知viewManager 添加或關(guān)閉一個(gè)view)


原理講完了节芥,舉個(gè)例子

比如玩家點(diǎn)擊了背包按鈕在刺,并且使用了一個(gè)道具

1:Controller收到了玩家點(diǎn)擊了背包按鈕的消息

2:controller接到消息后直接告訴DataManager ?push 背包View

3:DataManager接收數(shù)據(jù)后找到管理View的那個(gè)Data,通知他Push 背包View(是數(shù)據(jù)不是view)

4:Data接收到消息后先看看數(shù)據(jù)里有這個(gè)View么头镊,沒有就push一個(gè)蚣驼,有就把這個(gè)數(shù)據(jù)弄到最上層(view在屏幕的層級(jí)是根據(jù)data的順序排列的)。然后通知ViewManager View數(shù)據(jù)變了

5:ViewManager接收數(shù)據(jù)后根據(jù)數(shù)據(jù)的變化后添加或改變View層級(jí)相艇。

6:view被創(chuàng)建出來后會(huì)自己監(jiān)聽數(shù)據(jù)刷新自己

第二個(gè)例子

1:玩家點(diǎn)擊了道具

2:controller通知DataManager玩家道具減一,并標(biāo)記為發(fā)給服務(wù)器颖杏。

3:DataManager接收到消息后直接發(fā)給服務(wù)器(你可以寫多個(gè)功能模塊而不是把所有消息都放在一個(gè)DataManager里)

4:服務(wù)器收到消息后把結(jié)果返回給DataManager(這里默認(rèn)成功了),并且標(biāo)記為服務(wù)器更新

5:DadaManager接收到消息發(fā)現(xiàn)是服務(wù)器更新玩家數(shù)據(jù)后,直接找到對(duì)應(yīng)的Data并且通知他更新數(shù)據(jù)

6:Data接收到消息后會(huì)把自己的數(shù)據(jù)變了的消息告訴View

7:View更新

第三個(gè)例子

1:玩家在尋路的窗口輸入了坐標(biāo)厂捞。

2:controller通知DataManager尋路坐標(biāo)發(fā)生變化输玷。

3:DataManager 通知data更新。

4:data更新后靡馁,監(jiān)聽他的所有的view都會(huì)更新欲鹏。

5:玩家點(diǎn)擊開始尋路。

6:controller通知DataManager尋路(狀態(tài))發(fā)生變化臭墨。

7:DataManager 通知data更新赔嚎。

8:尋路AI監(jiān)聽到尋路的狀態(tài)為true時(shí)自動(dòng)開始尋路

注意:(是AI監(jiān)聽尋路狀態(tài)數(shù)據(jù)而不是controller控制尋路AI開始尋路)


基于這套理論的unity 開源框架(我在維護(hù),有線上產(chǎn)品)

倉庫地址 git@gitee.com:qipaworld/QPUnityFramework.git

Demo倉庫 git@gitee.com:qipaworld/QPUnityFrameWorkTest.git


點(diǎn)擊這里可以看到作者的其他文章

歡迎轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://www.reibang.com/p/2cb690c9c016

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末尤误,一起剝皮案震驚了整個(gè)濱河市侠畔,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌损晤,老刑警劉巖软棺,帶你破解...
    沈念sama閱讀 218,451評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異尤勋,居然都是意外死亡喘落,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門最冰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來瘦棋,“玉大人,你說我怎么就攤上這事暖哨《呐螅” “怎么了?”我有些...
    開封第一講書人閱讀 164,782評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵篇裁,是天一觀的道長沛慢。 經(jīng)常有香客問我,道長茴恰,這世上最難降的妖魔是什么颠焦? 我笑而不...
    開封第一講書人閱讀 58,709評(píng)論 1 294
  • 正文 為了忘掉前任斩熊,我火速辦了婚禮往枣,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘粉渠。我一直安慰自己分冈,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,733評(píng)論 6 392
  • 文/花漫 我一把揭開白布霸株。 她就那樣靜靜地躺著雕沉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪去件。 梳的紋絲不亂的頭發(fā)上坡椒,一...
    開封第一講書人閱讀 51,578評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音尤溜,去河邊找鬼倔叼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛宫莱,可吹牛的內(nèi)容都是我干的丈攒。 我是一名探鬼主播,決...
    沈念sama閱讀 40,320評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼巡验!你這毒婦竟也來了际插?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,241評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤显设,失蹤者是張志新(化名)和其女友劉穎框弛,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體捕捂,經(jīng)...
    沈念sama閱讀 45,686評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡功咒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,878評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了绞蹦。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片力奋。...
    茶點(diǎn)故事閱讀 39,992評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖幽七,靈堂內(nèi)的尸體忽然破棺而出景殷,到底是詐尸還是另有隱情,我是刑警寧澤澡屡,帶...
    沈念sama閱讀 35,715評(píng)論 5 346
  • 正文 年R本政府宣布猿挚,位于F島的核電站,受9級(jí)特大地震影響驶鹉,放射性物質(zhì)發(fā)生泄漏绩蜻。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,336評(píng)論 3 330
  • 文/蒙蒙 一室埋、第九天 我趴在偏房一處隱蔽的房頂上張望办绝。 院中可真熱鬧,春花似錦姚淆、人聲如沸孕蝉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽降淮。三九已至,卻和暖如春搏讶,著一層夾襖步出監(jiān)牢的瞬間佳鳖,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評(píng)論 1 270
  • 我被黑心中介騙來泰國打工媒惕, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留系吩,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,173評(píng)論 3 370
  • 正文 我出身青樓吓笙,卻偏偏與公主長得像淑玫,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,947評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 原文: iOS應(yīng)用架構(gòu)談 view層的組織和調(diào)用方案 iOS應(yīng)用架構(gòu)談 開篇 iOS應(yīng)用架構(gòu)談 網(wǎng)絡(luò)層設(shè)計(jì)方案 i...
    難卻卻閱讀 1,262評(píng)論 0 7
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫絮蒿、插件尊搬、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,104評(píng)論 4 62
  • 點(diǎn)擊查看原文 Web SDK 開發(fā)手冊 SDK 概述 網(wǎng)易云信 SDK 為 Web 應(yīng)用提供一個(gè)完善的 IM 系統(tǒng)...
    layjoy閱讀 13,764評(píng)論 0 15
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)土涝,斷路器佛寿,智...
    卡卡羅2017閱讀 134,657評(píng)論 18 139
  • 一、從伯夷與叔齊說起 伯夷但壮、叔齊是商末孤竹國君的兩個(gè)兒子冀泻,伯夷排行老大、叔齊排行老三蜡饵。孤竹君打算立叔齊為國君弹渔,可父...
    五經(jīng)博士閱讀 655評(píng)論 0 0