MVC架构在游戏开发中的应用
一 定义
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採用的是第一种方法。
MVC架构在游戏开发中的应用的更多相关文章
- [Unity游戏开发]向量在游戏开发中的应用(三)
本文已同步发表在CSDN:http://blog.csdn.net/wenxin2011/article/details/51088236 在上一篇博客中讲了利用向量点乘在游戏开发中应用的几种情景.本 ...
- [Unity游戏开发]向量在游戏开发中的应用(二)
本文已同步发表在CSDN:http://blog.csdn.net/wenxin2011/article/details/50972976 在上一篇博客中讲了利用向量方向的性质来解决问题.这篇博客将继 ...
- [Unity游戏开发]向量在游戏开发中的应用(一)
本文已同步发表在CSDN:http://blog.csdn.net/wenxin2011/article/details/50810102 向量在游戏开发中是非常实用的,我们在学校学完向量的知识后,只 ...
- Cocos2d-x游戏开发中的消息机制:CCNotificationCenter的使用
在HTML5游戏开发中,js可以使用Event对象的addEventListener(添加事件监听).dispatchEvent(触发事件)实现监听机制,如果在coocos2d-x中,去实现这种机制该 ...
- 二、Cocos2dx概念介绍(游戏开发中不同的坐标系,cocos2dx锚点)
注:ccp是cocos2dx中的一个宏定义,#define ccp(__X__,__Y__)CCPointMake((float)__X__, (float)__Y__),在此文章中表示坐标信息 1. ...
- [C++基金会]位计算 游戏开发中的应用
定义的位操作:通俗点说,,位计算是计算机操作二进制整数. 无论整数可以用二的方式来表示进度,不同类型的其长度的整数位的是不一样的.INT8要么char靠8个月2 位表示,INT16或者short是由1 ...
- 在基于TypeScript的LayaAir HTML5游戏开发中使用AMD
在基于TypeScript的LayaAir HTML5游戏开发中使用AMD AMD AMD是"Asynchronous Module Definition"的缩写,意思就是&quo ...
- 借助AMD来解决HTML5游戏开发中的痛点
借助AMD来解决HTML5游戏开发中的痛点 游戏开发的痛点 现在,基于国内流行引擎(LayaAir和Egret)和TypeScript的HTML5游戏开发有诸多痛点: 未采用TypeScript编译器 ...
- 游戏开发中IIS常见支持MIME类型文件解析
游戏开发中IIS常见支持MIME类型文件解析 .apkapplication/vnd.android .ipaapplication/vnd.iphone .csbapplication/octet- ...
随机推荐
- Linux中的FTP服务
FTP服务 文件传输协议 FTPFile Transfer Protocol 早期的三个应用级协议之一 基于C/S结构 双通道协议:数据和命令连接 数据传输格式:二进制(默认)和文本 两种模式:服务器 ...
- HTML5表单新增元素与属性
form属性 在html4中,表单的从属元素必须写在表单内部,而在HTML5中,可以把他们书写在任何地方,然后为该元素指定一个form属性,属性值为该表单的id,这样就可以声明该元素从属于指定表单了. ...
- php中session和cookie的使用及区别
1.cookie的使用 什么是 Cookie? cookie 常用于识别用户.cookie 是服务器留在用户计算机中的小文件.每当相同的计算机通过浏览器请求页面时,它同时会发送 cookie.通过 P ...
- Centos6.5安装Nexus及安装时的一些错误
注意:此篇博文未有配置部分,有需求的同学只能自行寻找了-- 1.下载: https://www.sonatype.com/download-oss-sonatype 2.官方推荐安装在/opt目录下 ...
- 洛谷2016 战略游戏 (0/1状态的普通树形Dp)
题意: 给出一个树,覆盖树上某一个点的花费为w[i],求树上每一条边至少有一个点覆盖的最小花费. 细节: 1.一条边的两端可以均被覆盖,但是不能存在一条边的两端都不被覆盖. 2.可能存在 分析: 对于 ...
- virtualbox创建虚机后配置网络上网
一般来说常用的会配置两个网卡:(两个网卡应该在安装虚拟机之前就设置好) 1.NAT网络: 用于上外网: 2.host-only: 用于ssh连接,可以被其他人远程访问. 前提: 如图:在virtual ...
- luogu3313 [SDOI2014]旅行
对每一个宗教建一棵线段树,然后树剖搞搞 #include <iostream> #include <cstdio> using namespace std; int n, m, ...
- 72.spring boot讨论群【从零开始学Spring Boot】
[从零开始学习Spirng Boot-常见异常汇总] 如果您碰到什么问题,您可以加群进行探讨,在群里有加入的都是Spring Boot志同道合的朋友: Spring Boot QQ交流群:193341 ...
- 70.打印所有Spring boot载入的bean【从零开始学Spring Boot】
[从零开始学习Spirng Boot-常见异常汇总] 问题的提出: 我们在开发过程当中,我们可能会碰到这样的问题:No qualifying bean 就是我们定义的bean无法进行注入,那到底是什 ...
- ASP.NET MVC WebAPI请求
基础: 首先,先创建一个“ASP.NET 空Web应用程序” : 然后添加对 “System.Web.Http” 和 “System.Web.Http.WebHost” 的引用: 再添加对“Syste ...