【Unity(2)】unity开发的基本框架和经典的 MVC 架构模式

embedded/2024/10/23 20:50:15/

什么是架构?

架构是一个约定,一个规则,一个大家都懂得遵守的共识。那这是什么样的约定、什么样的规则、什么样的共识呢?

一个项目开始立项的时候,最常见的一个情况就是:几个人一个小团队,开始什么也不做,开始写代码,验证逻辑,然后 game 就开始写起来了。公司的一些的所谓的领导层一开始就把游戏定义为“我们要做的一个大作”,那么这个事情本身就是一个笑话。没有任何的规划和设计,我们就妄图就写出一个所谓的杰出的作品出来是不现实的。Unity 再好用,以这个心态去做游戏,一定会写不出来好的游戏来。——刘钢《Unity 项目架构和开发管理》

看到视频中的这段话,需要建立最基本的规划,比如最常见的表现和逻辑的分离。

1 表现逻辑分离

我们大家都知道,做项目尽可能地要把表现和逻辑分离。而最常用最经典的方式就是使用 MVC。

经典的 MVC 架构模式

MVC 是在软件开发时最常用的架构模式,我想大家都应该接触过,所以 MVC 的概念在这里笔者不会浪费口舌去赘述,不了解的同学可以参阅阮一峰前辈的《谈谈MVC模式》http://www.ruanyifeng.com/blog/2007/11/mvc.html。

MVC是三个单词的首字母缩写,它们是Model(模型)、View(视图)和Controller(控制)。

这个模式认为,程序不论简单或复杂,从结构上看,都可以分成三层。

  • 1)最上面的一层,是直接面向最终用户的"视图层"(View)。它是提供给用户的操作界面,是程序的外壳。

  • 2)最底下的一层,是核心的"数据层"(Model),也就是程序需要操作的数据或信息。

  • 3)中间的一层,就是"控制层"(Controller),它负责根据用户从"视图层"输入的指令,选取"数据层"中的数据,然后对其进行相应的操作,产生最终结果。

这三层是紧密联系在一起的,但又是互相独立的,每一层内部的变化不影响其他层。每一层都对外提供接口(Interface),供上面一层调用。这样一来,软件就可以实现模块化,修改外观或者变更数据都不用修改其他层,大大方便了维护和升级。

bg2007110801.jpg

我用Windows的计算器小程序为例,解释一下MVC模式,虽然它不一定使用这个模式编写。

在这个计算器程序中,外部的那些按钮和最上面的显示条,就是"视图层",那些需要运算的数字就是"数据层",执行加减乘除的那些内部运算步骤就是"控制层"。每一层执行不同的功能,整个程序的结构非常清楚。

如果我们扩大一点想象,就会发现,很多程序本质上都是这种模式:对外提供一组触发器(本例中是按钮),然后执行一些内部操作,最后返回结果。因此,MVC模式的应用是非常广泛的。

参考

https://www.cnblogs.com/liangxiegame/p/12557515.html
http://www.ruanyifeng.com/blog/2007/11/mvc.html


http://www.ppmy.cn/embedded/129900.html

相关文章

android NDK 编译提示 is not able to compile a simple test program

问题描述 在将项目 clone 下来之后编译,提示 The C compiler"C:/Users/***/AppData/Local/Android/Sdk/ndk/21.1.6352462/toolchains/llvm/prebuilt/windows-x86_64/bin/clang.exeis not able to compile a simple test program问题分析 很明显的提示&#…

推荐算法工程师面试中常见的问题及答案1

以下是一些推荐算法工程师面试中常见的问题及答案,覆盖了推荐系统中的经典算法、评价指标、业务场景等多个方面。你可以通过这些问题来全面了解面试中可能涉及的知识点。 1. 协同过滤(Collaborative Filtering)的两种主要方法是什么&#xf…

sprint-test和junit的区别

1. spring-test 依赖 <dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>5.3.10</version><scope>test</scope> </dependency>用途&#xff1a;spring-test 是 …

flask 接口还在执行中,前端接收到接口请求超时,解决方案

在 Flask 中,当某个接口执行时间较长而导致前端请求超时时,需要考虑以下解决方案: 1. 优化接口的响应时间 如果可能,先优化接口中的代码逻辑,减少处理时间。对于查询操作,可以考虑数据库索引优化、缓存机制等手段。2. 增加请求超时时间 如果接口确实需要较长时间完成,前…

React基础知识(一) - React初体验

React是在2013年&#xff0c; 由Faceboo开源的&#xff0c;用于构建用户界面的 JavaScript 库。总所周知啊,React是前端三大框架之一啊现在前端领域最为流行的是三大框架&#xff1a; ReactVueAngular 前端三大框架 React开发的特点&#xff1a; &#xff08;1&#xff09;声明…

python图片格式NV12,RGB相互转换。

一 背景 最近需要把图片nv12格式转换为rgb&#xff0c;因为NV12格式存储占空间比较小&#xff0c;采集时候存储NV12格式&#xff0c;现在需要把NV12格式转换为RGB格式。二 代码 1 NV12 转 RGB import os import cv2 import numpy as npdef nv12_to_rgb(nv12_path, save_path,…

【文心智能体 | AI大师工坊】如何使用智能体插件,完成一款智能体的开发

文章目录 前言一、智能体运行效果二、如何制作智能体 前言 在这个日新月异的时代&#xff0c;人工智能技术正如星辰般璀璨&#xff0c;迅速渗透到我们生活的方方面面。&#x1f320; 从智能家庭设备到无人驾驶汽车&#xff0c;从精准医疗诊断到个性化教育辅导&#xff0c;AI正…

英雄联盟也裁员了。。。

大家好&#xff0c;我是鸭鸭&#xff01; 想不到裁员的风刮到了《英雄联盟》。 2009 年&#xff0c;《英雄联盟》上线&#xff0c;直至今天它还活跃在网吧屏幕上。 有多少游戏可以经历 15年&#xff1f;对于《英雄联盟》来说&#xff0c;也许用“传奇”这个词更加合适。但如…