首页 > 其他分享 >【unity】MVC

【unity】MVC

时间:2022-11-02 18:47:58浏览次数:75  
标签:游戏 框架 Unity unity MVC Model View

前言

MVC是非常经典的分层设计,是时候记录下来了。

什么是MVC

MVC是Xerox PARC在二十世纪八十年代为编程语言Smalltalk-80设计的一种软件框架模式,其中定义了Model-View-Controller三层,这三层分别具有特定职能,使得开发过程变得可控。现已被广泛使用。

MVC的结构

Model

Model的作用是存储游戏对象的核心数据和状态,处理一切数据逻辑。它不直接和View层交互,一般借由事件来分发消息。

View

View的作用是从Model层查询数据状态,并即时更新游戏UI。一般来说就是UI层。

Controller

Controller的作用是接受用户的输入,并把对应命令转递给Model或View,让它们执行对应操作。简单来说,C把各种M和各种V联系起来。

MVC解决了什么问题

显然,它做到了数据和显示的解耦。这是事件驱动的功劳,现在主流的游戏UI更新方式就是事件驱动。

在早期的软件开发中,一份数据要以不同的方式展现出来,即一个M(数据),多种V(展示),很适用于MVC。

MVC的改进方案

PureMVC是一款新式的MVC框架。在传统的MVC框架上,它新增了Proxy、Mediator和Command来辅助MVC三层进行工作。

image

详情指路->PureMVC--一款多平台MVC框架

针对Unity的MVC改进方案

Unity With MVC: How to Level Up Your Game Development中提到了他对通用MVC框架的改进,以更好地适应游戏开发的需求:

现在,我想介绍一下对通用 MVC 模式的两个小修改,这有助于它适应我在使用 MVC 构建 Unity 项目时遇到的独特情况:

MVC 类引用很容易分散在整个代码中。 - 在 Unity 中,开发人员通常必须拖放实例以使其可访问,或者通过繁琐的查找语句访问它们。 - 如果 Unity 崩溃或某些错误使所有拖动的引用消失,则丢失引用地狱将随之而来。 - 这使得必须具有单个根引用对象,通过该对象可以访问和恢复应用程序中的所有实例。GetComponent( ... )
某些元素封装了应高度可重用的常规功能,并且通常不属于模型、视图或控制器的三个主要类别之一。我喜欢简单地称这些为组件。它们也是实体组件意义上的“组件”,但只是充当 MVC 框架中的帮助程序。 - 例如,aComponent,它只按给定的角速度旋转事物,并且不通知,存储或决定任何东西。Rotator
为了帮助缓解这两个问题,我想出了一个修改后的模式,我称之为AMVCC,或应用程序-模型-视图-控制器-组件。

image

想深入了解可以去原博客查看。

非合理不使用

MVC对于响应式交互的UI系统有优势;但对于游戏的其他模块来说,使用MVC可能并不合理。

不同于需求相对固定的其他前端开发,游戏开发的需求复杂多变,开发时根据项目的实际需求来改造或制定框架才是合理的。不要为了用框架而生搬硬套。

参考资料

Unity With MVC: How to Level Up Your Game Development
PureMVC--一款多平台MVC框架
探讨:为什么在游戏开发中不使用MVC?

标签:游戏,框架,Unity,unity,MVC,Model,View
From: https://www.cnblogs.com/OtusScops/p/16849090.html

相关文章

  • 设计模式十二(访问者模式,mvc模式,业务代表模式)
    访问者模式    publicinterfaceComputerPart{publicvoidaccept(ComputerPartVisitorcomputerPartVisitor);}publicclassMonitorimplementsC......
  • Unity 免费资源网站
    UnityFreakshttps://unityfreaks.com/UnityAssets4Freehttps://unityassets4free.com/Game-Assethttps://game-asset.infoGameAssetsFreehttps://gameassetsfree.......
  • 爱上源码,重学Spring MVC深入
    1.1gradle搭建源码调试环境1)搭建gradle环境4个步骤1、File-New-Module选择java和web2、填写包信息3、存储路径2)增加起步依赖依赖的项目,直接复制粘贴上去1、对......
  • 从源码分析 MySQL的多版本控制(MVCC)
    什么是MVCCMVCC,Multi-VersionConcurrencyControl,多版本并发控制。MVCC是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问;在编程语言中实现事务内存。MV......
  • Unity PostProcessing : Outlines
    写在前面:本文章为个人学习笔记,方便以后自己复习,也希望能帮助到他人。由于本人水平有限难免出现错误,还请评论区指出,多多指教。部分图元和素材来源于网络,如有侵权请联系本......
  • Unity PostProcessing : Boxblur
    写在前面:本文章为个人学习笔记,方便以后自己复习,也希望能帮助到他人。由于本人水平有限难免出现错误,还请评论区指出,多多指教。部分图元和素材来源于网络,如有侵权请联系本......
  • Unity坐标系入门
    一、坐标系的概念Unity世界坐标系采用左手坐标系,大拇指指向X轴(红色),食指指向Y轴(黄色),中指向手心方向歪曲90度表示Z轴(蓝色),同时Z轴也是物体前进方向,下图表示Unity的四......
  • Unity Processing Basic
    写在前面:本文章为个人学习笔记,方便以后自己复习,也希望能帮助到他人。由于本人水平有限难免出现错误,还请评论区指出,多多指教。部分图元和素材来源于网络,如有侵权请联系本......
  • 关于SpringMvc使用@RequstBody报错500的原因
    在使用SpringMvc框架接收前端数据添加到数据库时报500错误,@PostMappingpublicResultsave(@RequestBodyBookbook){booleanflag=bookService.save......
  • SpringMVC
    SpringMVC简述是基于spring的一个框架,实际上就是spring的一个模块,专门做web开发的。可理解为servlet的一个升级。web开发底层是servlet,框架是在servlet基础......