一 定義
MVC即Model View Controller,是模型(model)-視圖(view)-控制器(controller)的縮寫。MVC是一種“前端”的設計模式。
MVC的目的是:希望View和Model分離,當某一方改變時。而還有一個方不必隨之改變的。
比如,Java EE平台,iOS都是典型的基於MVC思想思想的,那么我們怎么在游戲設計中使用MVC模式呢。
二 MVC架構具體解釋
1 模型Model
一直推薦一種思想:“全部的開發都是以數據位中心”。在MVC中,Model就是我們的數據中心。
Model的主要工作是保存數據,處理數據組織的相關邏輯。
以游戲中的好友系統為例:FriendModel須要保存從server請求過來的數據,然后須要提供接口,如返回排序后的結果。
數據另一個特點就是“唯一性,可重用”,盡管在各個界面的顯示各有不同,但這份數據時唯一的。
比如,FriendModel在好友系統中表現為好友的各種信息詳情,而在好友PK系統中又以戰力的顯示為主。
但這對於FriendModel這份數據來說。它是唯一的,僅僅是以不同的邏輯組織。提供不同的接口而已。
2 視圖View
View負責與用戶的交互,交互又分為兩種:輸入和輸出。
2.1 輸入
輸入就是收集玩家的操作,比如玩家點擊了一個button,或者輸入了某些文字。比如。當玩家點擊了一個好友的頭像,或者點擊了刪除好友。
就須要對這些輸入進行響應,對數據做出對應的處理。
2.2 輸入
輸出就是將游戲中各種數據。展示出來(包含視圖展示,特效,聲音等),讓玩家可以看清楚,看明確。比如,上述中的FriendModel中保存的數據,輸出就負責將其顯示出來。
讓玩家看到這個好友的性別是男或者女。而不是1或者0,或是其他什么的。
3 控制器Control
Control就是一個控制中心,關聯着Model和View,假設沒有了Control,Model和View就是兩個全然分離的模塊。當Model改變時。Control就會將這樣的改變更新到View上面顯示出來。
當View接受到玩家的交互時。會對數據做出對應的處理。
比如。當Model中接受到好友請求時。Control就會控制View,彈出一個提示框,提醒“XXX想要加入你為好友”。
當你點擊了接受以后,Control就會發送一條信息給后台,后台返回數據。從而改變Model。
三 組合形式
就拿上面的好友系統來說。
通常會有一個單獨的場景SceneFriend,然后有FriendModel,FriendView,最后就是FriendControl。
那么MVC是怎樣組織到場景中的呢?也有兩種做法。
1 將FriendModel,FriendView做為FriendControl的成員變量。
2 將FriendModel。FriendControl做為FriendView的成員變量。
第一種方案比較符合MVC這樣的模式的設計,講MV作為C的成員變量,控制起來比較方便。
另外一種方案對UI的結構來說。更加適合。
由於在Scene中加入一個View,這個是比較合理的。
第一種方案。我們須要將Control的成員變量View,加入到Scene中。
兩種各有優劣,看大家的取舍了。iOS採用的是第一種方法。