Unity3d中使用MVC框架

32 篇文章 2 订阅
订阅专栏

一、前言

MVC是一种比较常见的设计框架,是一种将代码的功能进行划分的一种设计框架,主要原理就是将软件用户界面和业务逻辑分离,以使代码可扩展性、可复用性、可维护性、灵活性加强。 MVC在桌面应用程序,以及网页架构上面用的比较多,那么怎么应用到Unity3d中呢,下面就带大家去了解这个设计框架,以及如何在Unity中应用。

二、MVC介绍

简介

MVC全名是Model View Controller,是模型(Model)-视图(View)-控制器(Controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。

Model(模型) 是应用程序中用于处理应用程序数据逻辑的部分。   通常模型对象负责在数据库中存取数据。 View(视图) 是应用程序中处理数据显示的部分。   通常视图是依据模型数据创建的。 Controller(控制器) 是应用程序中处理用户交互的部分。   通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。    MVC开始是存在于桌面程序中的,M是指业务模型,V是指用户界面,C则是控制器,使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。比如一批统计数据可以分别用柱状图、饼图来表示。C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新。

模型-视图-控制器(MVC)是Xerox PARC在二十世纪八十年代为编程语言Smalltalk-80发明的一种软件设计模式,已被广泛使用。后来被推荐为Oracle旗下Sun公司Java EE平台的设计模式,并且受到越来越多的使用ColdFusion和PHP的开发者的欢迎。模型-视图-控制器模式是一个有用的工具箱,它有很多好处,但也有一些缺点。

MVC的业务流程

MVC是设计模式吗

MVC是一种设计模式,但是却不在Gof总结过的23种设计模式中,所以确切说MVC不是一个设计模式,而是多种设计模式的组合,而不仅仅只是一个设计模式。 组成MVC的三个模式分别是组合模式、策咯模式、观察者模式,MVC在软件开发中发挥的威力,最终离不开这三个模式的默契配合。 那些崇尚设计模式无用论的程序员,请了解只要你们使用MVC,就离不开设计模式。 组合模式只在视图层活动, 视图层的实现用的就是组合模式,当然,这里指的实现是底层的实现,是由编程框架厂商做的事情,用不着普通程序员插手。

组合模式的类层次结构是树状的, 而我们做Web时视图层是html页面,html的结构不正是树状的吗,这其实就是一个组合模式的应用,只是浏览器厂商已经把界面相关的工作帮我们做掉了,但它确确实实是我们应用MVC的其中一部分,只是我们感觉不到罢了,这也是我们觉得View是实现起来最简单最没有歧义的一层的原因。

除网页以外的其他用户界面程序,如WPF、Android、ASP.NET等等都是使用树状结构来组织界面控件对象的,因为组合模式就是从界面设计的通用解决方案总提炼出来的。所以与其说MVC选择了组合模式,还不如说组合模式是必定会存在MVC中的,因为只要涉及到用户界面,组合模式就必定存。事实上即使不理解组合模式,也不影响程序员正确的使用MVC,组合模式本就存在于程序员接触不到的位置。

然而,观察者模式和策略模式就显得比较重要,是实实在在MVC中接触的到的部分。

观察者模式有两部分组成,被观察的对象和观察者,观察者也被称为监听者。对应到MVC中,Model是被观察的对象,View是观察者,Model层一旦发生变化,View层即被通知更新。View层和Model层互相之间是持有引用的。 我们在开发Web MVC程序时,因为视图层的html和Model层的业务逻辑之间隔了一个http,所以不能显示的进行关联,但是他们观察者和收听者的关系却没有改变。当View通过http提交数据给 服务器,服务器上的Model接受到数据执行某些操作,再通过http响应将结果回送给View,View(浏览器)接受到数据更新界面,这不正是一个接受到通知并执行更新的行为吗,是观察者模式的另一种表现形式。

但是,脱离Web,当通过代码去纯粹的表示一个MVC结构的时候,View和Model间无疑是观察者和被观察的关系,是以观察者模式为理论基础的。即使在Web中因为http壁垒的原因导致真正的实现有点走样,但是原理核心和思路哲学却是不变的。

最后是策略模式。策略模式是View和Controller之间的关系,Controller是View的一个策略,Controller对于View是可替换的, View和Controller的关系是一对多,在实际的开发场景中,也经常会碰到一个View被多个Controller引用,这即使策咯模式的一种体现,只是不那么直观而已。

总结一下,关于MVC各层之间关系所对应的设计模式

View层,单独实现了组合模式

Model层和View层,实现了观察者模式

View层和Controller层,实现了策咯模式

MVC就是将这三个设计模式在一起用了,将这三个设计模式弄明白,MVC将毫无神秘感可言。如果不了解这三个设计模式去学习MVC,那不管怎么学总归是一知半解,用的时候也难免不会出想问题。

三、参考文章

深入理解MVC 深入理解MVC_周小pang的博客-CSDN博客 MVC简介 https://www.cnblogs.com/diyunfei/p/6752618.html 【Unity】MVC框架 【Unity】MVC框架_unity mvc框架_两水先木示的博客-CSDN博客 Unity中MVC简单应用 Unity中MVC简单应用 - 简书 【Unity3D】手游开发实践《腾讯桌球》客户端开发经验总结 https://blog.csdn.net/q764424567/article/details/81020381 MVC框架 MVC框架_百度百科

四、Unity中使用MVC

本篇文章主要是讲一下我是如何在Unity中使用MVC模式,MVC模式肯定不能照搬进Unity中,所以很多东西都做了修改,以适合我的项目使用,如果有不对的地方,希望大家能指正出来。

使用原理

代码文档结构就是这样的 目前我了解的MVC应用到Unity中只有两种模式,一种就是先按照业务功能划分,再按照MVC划分

蛋糕心语游戏就是这种模式,使得模块更聚焦(高内聚) 第二种就是先按照MVC划分,然后再分出来业务功能

第二种方式用多了发现随着项目的运营模块增多,没有第一种那么好维护。

MVC的关键就在于业务划分,代码分离,其实跟三层架构比较相似,把业务层、逻辑层、数据层分开来,互相通过一个接口进行调用,但是并不知道接口是怎么实现的。

所以现在的问题就在于如何去划分呢。

实现: Model(模型层): 在这一层主要就是存放用户的数据,UI的数据,静态字段, 数据存储,以及模型贴图资源的存储 比如说:

  • 存放静态字段

  • 存放数据

  • 存放模型材质字段

  • 数据库增删改查操作

View(视图层) 在这一层主要是放一些UI参数,获取UI数据,获取按钮事件等

点击事件

Controller(控制层) 这一层就是去实现业务逻辑功能,获取Model的数据,通知View层更新数据,承上启下的功能

五、实例

就带大家实现在Untiy中使用MVC模式,实现更换图片的功能 步骤一:设计界面

步骤二:MVC搭建 Model_Main.cs

View_Main.cs

Controller_Main.cs

关于那个鼠标点击事件那个方法,在我另一篇文章中有讲到,不懂的可以去那篇帖子仔细看一下。 【Unity3D-UGUI应用篇】使用UGUI的Image,点击图片生成物体_恬静的小魔龙的博客-CSDN博客 效果:

源代码已经上传到CSDN,按需下载 https://download.csdn.net/download/q764424567/10768387

六、总结

PS:程序员最重要的就是总结,不然学的再多到关键时刻用不上还是白搭,总结梳理,然后写下来,当快忘了的时候可以回来看看,会有不一样的体悟哦。

在Unity中应用MVC模式已经讲解完了,MVC模式其实就是多种设计模式的结合体,也是三层架构的改良产品,基本原理就是把业务逻辑、功能实现、数据给分开来,利于增加功能,和维护。

俗话说的好,一千个人就有一千个哈姆雷特,每个人研究MVC之后,运用到Unity中的方法都不尽相同,方法也是很多样,我主要就是提供一个想法和思路,更多优化运用还要大家多开动脑筋咯。

最后,再回顾一下

Model(数据层):存放静态字段、数据存储、模型资源存储

View(视图层):就是用户可以看到的层,指的是可以看到的UI,模型,加载和调用事件

Controller(管理层):实现业务逻辑功能、加载模型资源、功能实现等

原文地址: 【Unity3D日常开发】Unity3d中使用MVC框架 - 腾讯云开发者社区-腾讯云 (tencent.com)

如何在Unity实现MVC模式?
SiKi学院的博客
01-05 2339
MVC即Model View Controller,是模型(model)【数据层】-视图(view)【表现层】-控制器(controller)【逻辑层】的缩写。主要应用于网站开发,在游戏开发方面,因为不同游戏的需求、功能不尽相同,所以一般来说游戏不使用统一架构开发游戏。
Unity3DMVC框架思想实现的小例子
frank901的博客
06-02 1万+
模型Model脚本(GameModel)using UnityEngine; using System.Collections; using System.Collections.Generic; //model是双向的,间的 public class GameModel : MonoBehaviour { //委托model去通知自身view(是用事件完成的),实例---(通知改变)
Unity3DMVC框架Unity项目的理解与使用
MHGO的博客
04-30 4373
推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址我的个人博客QQ群:1040082875 一、前言 MVC是一种比较常见的设计框架,是一种将代码的功能进行划分的一种设计框架,主要原理就是将软件用户界面和业务逻辑分离,以使代码可扩展性、可复用性、可维护性、灵活性加强。 MVC在桌面应用程序,以及...
UnityMVC、MVP、MVVE框架
qq_54476817的博客
08-26 2836
本文结合一个小案例,讲解MVC、MVP和MVVE在Unity的相关应用MVC思想最初来自网页和软件开发,并不是为了游戏开发而生,在游戏开发主要用在大型商业游戏,小项目使用反而会带来更多麻烦,请酌情使用
Unity 带你写MVC架构
yueh0607
09-11 3900
Unity内教你理解MVC并写一个简单的MVC框架
UnityUnityMVC框架的应用
葫芦娃子救我的博客
07-19 834
UnityMVC框架的应用
UnityMVC思想(通过普通方法和使用MVC思想完成同一个小案例:掌握MVC简单框架
m0_61490399的博客
08-21 1698
Unity~UI MVC思想
Unity3D客户端PureMVC框架视屏讲解
12-20
基于Unity3D讲解PureMVC框架,通过游戏制作讲解,适合学习框架的人
unity3d mvc框架
12-17
unity3d mvc框架, Code Control v1.2.unitypackage,代码控制器
Unity一键生成MVC框架
09-17
懒得创建GameObject,懒得创建Tag,懒得设置Tag,懒得添加脚本,懒得每次都要获取引用的懒癌患者福音
unity基于MVC的ui框架
01-17
unity基于MVC的ui框架》博客的资源,请到这里下载。自己写的框架用了几年了,也做了几个游戏,应该是经受住项目考验了吧,现在分享下简本。
SpriteMVCUnity lua热更新mvc框架
02-03
SpriteMVC ...在使用LuaFramework的过程当,为了项目的便利自己不断的修改整合,使用PureMVC的思维,用lua实现一套类似的逻辑,用于lua部分代码mvc的实现是修改的初衷,这便是框架的由来过程; C#大部分
基于Unity3D使用MVC框架设计塔防游戏.doc
09-07
"基于 Unity3D 使用 MVC 框架设计塔防游戏" 本文档介绍了一款基于 Unity3D 使用 MVC 框架设计的塔防游戏的开发项目。该游戏项目的目的是将游戏与学习科普相结合,使玩家对环境社会等问题有更深的了解和认识。在游戏...
Unity框架——MVC框架
Htlas的博客
01-16 5445
前言——什么是MVC框架MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面 显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于 映射传统的输入、处理和输出功能在一个逻辑的图形化用...
UnityMVC
Go_Accepted的博客
11-06 447
主要应用在UI系统的开发上,将Panel的逻辑划分为三块:数据、界面、业务逻辑。模型(Model)-视图(view)-控制器(controller)好处是:降低耦合,方便修改,逻辑更清晰。缺点是:脚本太多,体量变大,流程变复杂。
UnityMVC思想
qq_51700372的博客
12-17 515
MVC=Model(模型) View(视图) Controller(控制器) 一种软件设计规范,特点是将业务逻辑、数据、界面显示分离的组织代码方法;通过将业务逻辑聚集到一个部件里,实现在改进和个性化定制界面及用户交互时,不需要重新编写业务逻辑。 MVC是一种组织代码的结构也是一种思想,在学习MVC结构的同时,不能拘泥于MVC结构和设计模式。灵活和理解各种MVX,找到一个适合自己项目的,稳定的,有序的,能满足需求的实现方式。学习和运用框架结构和设计模式的目的应该是提高项目的开发能力与开发效率,而非学习框架本身
UnityMVC框架
热门推荐
两水先木示的博客
06-21 1万+
一、介绍MVC       MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用...
Unity MVC框架之见解
m0_48554728的博客
05-24 3224
Unity MVC框架之见解MVC框架认识构架图案例无框架,普通逻辑代码脚本MVC框架的运用Model脚本View脚本主界面的View脚本角色View脚本主界面的Controller脚本角色Controller脚本控制主界面的显示脚本脚本控件物体的连接 MVC框架认识 MVC框架本不是用于在游戏行业产生的框架,但是其编程思想对游戏开发的影响也很大。 M: model,是模型的意思,可是模型是为何物?是我们游戏所要操作的人物模型等等。其主要就是存储数据的一个物体。我们所见到的的软件等等,都是本身去操作一条条
简历模板简洁风简洁干练简历模板简历模板简洁风(简洁干练简历模板).zip
最新发布
06-17
在求职的征途上,一份出色的简历是你通往梦想职位的敲门砖。我们精心准备了一系列面试求职简历模板,旨在帮助你以最佳形象站在潜在雇主面前。这些简历模板不仅设计精美,而且注重内容的清晰呈现,使招聘经理一目了然地看到你的能力和经验。 我们的模板集合了多种风格与布局,无论你是应届毕业生、职场跳槽者还是行业专家,都能在这里找到适合你职业形象的简历设计。每一个模板都经过精心设计,确保你的简历在众多求职者脱颖而出,同时保持足够的专业度和可读性。 不仅如此,我们的简历模板易于编辑,你可以根据具体职位需求快速调整内容,展现你的个人优势和职业成就。使用这些模板,将大大提高你的面试机会,并帮助你更好地表达自己的价值和潜力。 别让传统且缺乏创意的简历阻碍你迈向成功的道路。立即下载这些精美的简历模板,让你的求职之路更加顺畅,向心仪的工作迈进吧!记住,一个良好的开始是成功的一半,而一份精致的简历,正是你成功的起点。
unity游戏ui框架mvc
08-16
- *1* [【Unity3D日常开发】Unity3d使用MVC框架](https://blog.csdn.net/q764424567/article/details/83788696)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_...

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • xcode armv6 armv7 armv7s arm64 49589
  • 四种加密算法之RSA源代码-C++ 41111
  • unity平台的预处理 37198
  • Unity的基本Shader框架写法&颜色、光照与材质 20929
  • 解决Unity中,使用Ngui 的默认字体Arial,在部分Android设备显示中文不清楚,或者显示不出来问题 18372

分类专栏

  • 学习笔记 91篇
  • ndk学习资料 1篇
  • Mac win7 分区 1篇
  • java环境变量配置 1篇
  • 学习笔记 c++ 11篇
  • 论文 1篇
  • Xcode 学习笔记 7篇
  • CCSprite 1篇
  • lua学习 3篇
  • unity学习笔记 32篇
  • C#学习笔记 11篇
  • Http学习笔记 1篇
  • .NET学习笔记 1篇
  • shader学习笔记 2篇
  • Sublime 1篇
  • Strumpy Shader学习笔记 1篇
  • ios app开发
  • cocos2d-x 学习笔记 1篇
  • SQLite 1篇
  • AI 2篇

最新评论

  • 四种加密算法之RSA源代码-C++

    you74092078: 实测,生成密钥对效率不是一点点慢。。。

  • 四种加密算法之RSA源代码-C++

    you74092078: 产生公私钥对效率怎么样

  • C++ jsoncpp 几种解析json方法

    zxp15629686028: 非常通俗易懂,把握关键

  • Cocos2dx 3.0 又一种创建项目方式

    小白白0312: 路径为啥输入不上啊大佬

  • unity增量更新策略

    u011258603: [code=javascript] [/code]ss

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • 【网络同步】浅析帧同步和状态同步
  • c# 快速排序和堆排序
  • C#:快速排序
2023年9篇
2021年1篇
2020年2篇
2018年5篇
2017年8篇
2016年11篇
2015年19篇
2014年65篇
2013年29篇
2012年29篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

深圳SEO优化公司飞来峡网站优化排名多少钱上海营销型网站建设泸州百度seo坪山网站建设设计价格汉中网站优化软件哪家好菏泽推广网站报价永州建站多少钱苏州网站建设设计价格丹东seo排名哪家好青岛建站报价信阳百度竞价包年推广多少钱海口至尊标王报价泰安推广网站潮州百度seo价格东莞关键词按天扣费推荐黄山营销型网站建设荷坳网站优化按天扣费哪家好榆林SEO按天计费价格石家庄网站优化按天收费价格衡阳建网站公司南联百搜标王公司衢州建网站沧州营销型网站建设推荐平凉百度标王价格防城港SEO按天计费哪家好宿迁SEO按效果付费坂田外贸网站建设报价武汉关键词排名包年推广报价铁岭网站优化推广推荐东营网站优化推广公司歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化