Unity3D日常開發(fā)】(十二)Unity3d中使用MVC框架

      網(wǎng)友投稿 1056 2022-05-30

      推薦閱讀

      CSDN主頁

      GitHub開源地址

      Unity3D插件分享

      簡書地址

      我的個人博客

      QQ群:1040082875

      一、前言

      MVC是一種比較常見的設(shè)計框架,是一種將代碼的功能進(jìn)行劃分的一種設(shè)計框架,主要原理就是將軟件用戶界面和業(yè)務(wù)邏輯分離,以使代碼可擴(kuò)展性、可復(fù)用性、可維護(hù)性、靈活性加強。

      MVC在桌面應(yīng)用程序,以及網(wǎng)頁架構(gòu)上面用的比較多,那么怎么應(yīng)用到Unity3d中呢,下面就帶大家去了解這個設(shè)計框架,以及如何在Unity中應(yīng)用。

      二、MVC介紹

      簡介

      【Unity3D日常開發(fā)】(十二)Unity3d中使用MVC框架

      MVC全名是Model View Controller,是模型(Model)-視圖(View)-控制器(Controller)的縮寫,一種軟件設(shè)計典范,用一種業(yè)務(wù)邏輯、數(shù)據(jù)、界面顯示分離的方法組織代碼,將業(yè)務(wù)邏輯聚集到一個部件里面,在改進(jìn)和個性化定制界面及用戶交互的同時,不需要重新編寫業(yè)務(wù)邏輯。MVC被獨特的發(fā)展起來用于映射傳統(tǒng)的輸入、處理和輸出功能在一個邏輯的圖形化用戶界面的結(jié)構(gòu)中。

      Model(模型) 是應(yīng)用程序中用于處理應(yīng)用程序數(shù)據(jù)邏輯的部分。

      通常模型對象負(fù)責(zé)在數(shù)據(jù)庫中存取數(shù)據(jù)。

      View(視圖) 是應(yīng)用程序中處理數(shù)據(jù)顯示的部分。

      通常視圖是依據(jù)模型數(shù)據(jù)創(chuàng)建的。

      Controller(控制器) 是應(yīng)用程序中處理用戶交互的部分。

      通常控制器負(fù)責(zé)從視圖讀取數(shù)據(jù),控制用戶輸入,并向模型發(fā)送數(shù)據(jù)。

      MVC開始是存在于桌面程序中的,M是指業(yè)務(wù)模型,V是指用戶界面,C則是控制器,使用MVC的目的是將M和V的實現(xiàn)代碼分離,從而使同一個程序可以使用不同的表現(xiàn)形式。比如一批統(tǒng)計數(shù)據(jù)可以分別用柱狀圖、餅圖來表示。C存在的目的則是確保M和V的同步,一旦M改變,V應(yīng)該同步更新。

      模型-視圖-控制器(MVC)是Xerox PARC在二十世紀(jì)八十年代為編程語言Smalltalk-80發(fā)明的一種軟件設(shè)計模式,已被廣泛使用。后來被推薦為Oracle旗下Sun公司Java EE平臺的設(shè)計模式,并且受到越來越多的使用ColdFusion和PHP的開發(fā)者的歡迎。模型-視圖-控制器模式是一個有用的工具箱,它有很多好處,但也有一些缺點。

      MVC的業(yè)務(wù)流程

      MVC是設(shè)計模式嗎

      MVC是一種設(shè)計模式,但是卻不在Gof總結(jié)過的23種設(shè)計模式中,所以確切說MVC不是一個設(shè)計模式,而是多種設(shè)計模式的組合,而不僅僅只是一個設(shè)計模式。

      組成MVC的三個模式分別是組合模式、策咯模式、觀察者模式,MVC在軟件開發(fā)中發(fā)揮的威力,最終離不開這三個模式的默契配合。 那些崇尚設(shè)計模式無用論的程序員,請了解只要你們使用MVC,就離不開設(shè)計模式。

      組合模式只在視圖層活動, 視圖層的實現(xiàn)用的就是組合模式,當(dāng)然,這里指的實現(xiàn)是底層的實現(xiàn),是由編程框架廠商做的事情,用不著普通程序員插手。

      組合模式的類層次結(jié)構(gòu)是樹狀的, 而我們做Web時視圖層是html頁面,html的結(jié)構(gòu)不正是樹狀的嗎,這其實就是一個組合模式的應(yīng)用,只是瀏覽器廠商已經(jīng)把界面相關(guān)的工作幫我們做掉了,但它確確實實是我們應(yīng)用MVC的其中一部分,只是我們感覺不到罷了,這也是我們覺得View是實現(xiàn)起來最簡單最沒有歧義的一層的原因。

      除網(wǎng)頁以外的其他用戶界面程序,如WPF、Android、ASP.NET等等都是使用樹狀結(jié)構(gòu)來組織界面控件對象的,因為組合模式就是從界面設(shè)計的通用解決方案總提煉出來的。所以與其說MVC選擇了組合模式,還不如說組合模式是必定會存在MVC中的,因為只要涉及到用戶界面,組合模式就必定存。事實上即使不理解組合模式,也不影響程序員正確的使用MVC,組合模式本就存在于程序員接觸不到的位置。

      然而,觀察者模式和策略模式就顯得比較重要,是實實在在MVC中接觸的到的部分。

      觀察者模式有兩部分組成,被觀察的對象和觀察者,觀察者也被稱為監(jiān)聽者。對應(yīng)到MVC中,Model是被觀察的對象,View是觀察者,Model層一旦發(fā)生變化,View層即被通知更新。View層和Model層互相之間是持有引用的。 我們在開發(fā)Web MVC程序時,因為視圖層的html和Model層的業(yè)務(wù)邏輯之間隔了一個http,所以不能顯示的進(jìn)行關(guān)聯(lián),但是他們觀察者和收聽者的關(guān)系卻沒有改變。當(dāng)View通過http提交數(shù)據(jù)給服務(wù)器,服務(wù)器上的Model接受到數(shù)據(jù)執(zhí)行某些操作,再通過http響應(yīng)將結(jié)果回送給View,View(瀏覽器)接受到數(shù)據(jù)更新界面,這不正是一個接受到通知并執(zhí)行更新的行為嗎,是觀察者模式的另一種表現(xiàn)形式。

      但是,脫離Web,當(dāng)通過代碼去純粹的表示一個MVC結(jié)構(gòu)的時候,View和Model間無疑是觀察者和被觀察的關(guān)系,是以觀察者模式為理論基礎(chǔ)的。即使在Web中因為http壁壘的原因?qū)е抡嬲膶崿F(xiàn)有點走樣,但是原理核心和思路哲學(xué)卻是不變的。

      最后是策略模式。策略模式是View和Controller之間的關(guān)系,Controller是View的一個策略,Controller對于View是可替換的, View和Controller的關(guān)系是一對多,在實際的開發(fā)場景中,也經(jīng)常會碰到一個View被多個Controller引用,這即使策咯模式的一種體現(xiàn),只是不那么直觀而已。

      總結(jié)一下,關(guān)于MVC各層之間關(guān)系所對應(yīng)的設(shè)計模式

      View層,單獨實現(xiàn)了組合模式

      Model層和View層,實現(xiàn)了觀察者模式

      View層和Controller層,實現(xiàn)了策咯模式

      MVC就是將這三個設(shè)計模式在一起用了,將這三個設(shè)計模式弄明白,MVC將毫無神秘感可言。如果不了解這三個設(shè)計模式去學(xué)習(xí)MVC,那不管怎么學(xué)總歸是一知半解,用的時候也難免不會出想問題。

      三、參考文章

      深入理解MVC https://blog.csdn.net/zuiyingong6567/article/details/80150834

      MVC簡介 https://www.cnblogs.com/diyunfei/p/6752618.html

      【Unity】MVC框架 https://blog.csdn.net/qq_39574690/article/details/80757261

      Unity中MVC簡單應(yīng)用 https://www.jianshu.com/p/acc689be52f9

      【Unity3D】手游開發(fā)實踐《騰訊桌球》客戶端開發(fā)經(jīng)驗總結(jié) https://blog.csdn.net/q764424567/article/details/81020381

      MVC框架 https://baike.baidu.com/item/MVC框架/9241230?fr=aladdin&fromid=85990&fromtitle=MVC

      四、Unity中使用MVC

      本篇文章主要是講一下我是如何在Unity中使用MVC模式,MVC模式肯定不能照搬進(jìn)Unity中,所以很多東西都做了修改,以適合我的項目使用,如果有不對的地方,希望大家能指正出來。

      使用原理

      代碼文檔結(jié)構(gòu)就是這樣的

      目前我了解的MVC應(yīng)用到Unity中只有兩種模式,一種就是先按照業(yè)務(wù)功能劃分,再按照MVC劃分

      蛋糕心語游戲就是這種模式,使得模塊更聚焦(高內(nèi)聚)

      第二種就是先按照MVC劃分,然后再分出來業(yè)務(wù)功能

      第二種方式用多了發(fā)現(xiàn)隨著項目的運營模塊增多,沒有第一種那么好維護(hù)。

      MVC的關(guān)鍵就在于業(yè)務(wù)劃分,代碼分離,其實跟三層架構(gòu)比較相似,把業(yè)務(wù)層、邏輯層、數(shù)據(jù)層分開來,互相通過一個接口進(jìn)行調(diào)用,但是并不知道接口是怎么實現(xiàn)的。

      所以現(xiàn)在的問題就在于如何去劃分呢。

      實現(xiàn):

      Model(模型層):

      在這一層主要就是存放用戶的數(shù)據(jù),UI的數(shù)據(jù),靜態(tài)字段,數(shù)據(jù)存儲,以及模型貼圖資源的存儲

      比如說:

      存放靜態(tài)字段

      存放數(shù)據(jù)

      存放模型材質(zhì)字段

      數(shù)據(jù)庫增刪改查操作

      View(視圖層)

      在這一層主要是放一些UI參數(shù),獲取UI數(shù)據(jù),獲取按鈕事件等

      點擊事件

      Controller(控制層)

      這一層就是去實現(xiàn)業(yè)務(wù)邏輯功能,獲取Model的數(shù)據(jù),通知View層更新數(shù)據(jù),承上啟下的功能

      五、實例

      就帶大家實現(xiàn)在Untiy中使用MVC模式,實現(xiàn)更換圖片的功能

      步驟一:設(shè)計界面

      步驟二:MVC搭建

      Model_Main.cs

      View_Main.cs

      Controller_Main.cs

      關(guān)于那個鼠標(biāo)點擊事件那個方法,在我另一篇文章中有講到,不懂的可以去那篇帖子仔細(xì)看一下。

      https://blog.csdn.net/q764424567/article/details/82424308

      效果:

      源代碼已經(jīng)上傳到CSDN,按需下載

      https://download.csdn.net/download/q764424567/10768387

      六、總結(jié)

      PS:程序員最重要的就是總結(jié),不然學(xué)的再多到關(guān)鍵時刻用不上還是白搭,總結(jié)梳理,然后寫下來,當(dāng)快忘了的時候可以回來看看,會有不一樣的體悟哦。

      在Unity中應(yīng)用MVC模式已經(jīng)講解完了,MVC模式其實就是多種設(shè)計模式的結(jié)合體,也是三層架構(gòu)的改良產(chǎn)品,基本原理就是把業(yè)務(wù)邏輯、功能實現(xiàn)、數(shù)據(jù)給分開來,利于增加功能,和維護(hù)。

      俗話說的好,一千個人就有一千個哈姆雷特,每個人研究MVC之后,運用到Unity中的方法都不盡相同,方法也是很多樣,我主要就是提供一個想法和思路,更多優(yōu)化運用還要大家多開動腦筋咯。

      最后,再回顧一下

      Model(數(shù)據(jù)層):存放靜態(tài)字段、數(shù)據(jù)存儲、模型資源存儲

      View(視圖層):就是用戶可以看到的層,指的是可以看到的UI,模型,加載和調(diào)用事件

      Controller(管理層):實現(xiàn)業(yè)務(wù)邏輯功能、加載模型資源、功能實現(xiàn)等

      MVC unity

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:FPGA的設(shè)計藝術(shù)(9)FPGA開發(fā)技巧與工程管理
      下一篇:excel制作漂亮表格的方法步驟圖
      相關(guān)文章
      亚洲国产区男人本色| 亚洲成熟丰满熟妇高潮XXXXX| 国产精品亚洲专区无码WEB| 亚洲AV无码专区在线亚| 亚洲酒色1314狠狠做| 亚洲美女激情视频| 久久综合亚洲鲁鲁五月天| 精品亚洲国产成AV人片传媒| 97亚洲熟妇自偷自拍另类图片| 亚洲毛片在线观看| 中文字幕亚洲免费无线观看日本| 亚洲综合久久综合激情久久| 久久精品国产亚洲77777| 亚洲欧洲另类春色校园小说| 亚洲国产高清在线精品一区| 国产成人精品日本亚洲11| 亚洲午夜在线播放| 亚洲老熟女五十路老熟女bbw| 亚洲国产欧美日韩精品一区二区三区 | 亚洲中文无码av永久| 亚洲一区中文字幕在线观看| 亚洲色欲色欲www| 亚洲啪AV永久无码精品放毛片| 亚洲五月丁香综合视频| 亚洲经典千人经典日产| 在线观看亚洲精品专区| 亚洲国产精品无码久久青草 | 亚洲国产午夜中文字幕精品黄网站| 亚洲AV无码之日韩精品| 久久久亚洲精品蜜桃臀 | 亚洲色少妇熟女11p| 亚洲区日韩精品中文字幕| 丁香亚洲综合五月天婷婷| 亚洲伊人久久综合影院| 精品久久久久久亚洲| 337p日本欧洲亚洲大胆艺术| 亚洲人精品亚洲人成在线| 久久久久亚洲国产AV麻豆| 亚洲一区二区精品视频| 亚洲成AV人片在WWW色猫咪| 亚洲黄色免费观看|