Unity(MVC思想)

MVC

一下演示使用MVC和不使用MVC的做法区别。 前两个没有使用MVC

主面板逻辑:

mainPanel是该脚本名字

每个场景中不一定存在该面板,单纯的显隐需要去手动挂载过于麻烦。

所以自己读取创建面板出来(每个场景仅创建一次),存下该面板,执行其他逻辑

大项目可以直接删,防止场景上物体过多

角色面板逻辑:

获取主面板身上脚本,本来是用来判断是否为空的。 这里可以用于外界调用更新方法

为了防止修改,写一个属性,仅允许get'

Model数据

Unity中没有action,只有自带的UnityAction,且需要引入命名空间

事件本身私有,提供给外部添加移除方法即可。

确保第一次数据是初始的,且之后再次获取时,这个数据是最新的。 因为静态,单例全局只有一份

View界面

无需多言,看代码

*Controller业务逻辑

此脚本是连接数据模型和界面显示的重要桥梁

初始为空,加载面板时再获取

此处为第四个脚本,仅检测玩家输入

这里获取View引用的方法,是直接将两个脚本都挂到同一个物体上,然后getcomponent

玩家展示面板和主面板逻辑,他们的controller脚本写法基本相同,都是获取统一物体身上的view,然后监听按钮,控制显隐、数据更新、升级等

数据模块当中的这个事件,是在升级时调用的,因此在控制模块中加入view的更新方法。

记得退订

其他MVX

记住适合自己的才是最好的

MVP

MVC中v用的更新方法基于传进来的m的数据,而mvp中,不需要依赖m的数据

MVVM(不好)→MP

比如a里面的名字绑定b的名字,只需要改变b'就能改变a,不需要获取a的引用了。

MP:

这个在unity小框架里面提到过

MVE

PureMVC

只需要导入这三个文件夹即可

第二种可以打开它的vs工程,右键"生成。然后找到它的dll包,导入unity的plugins文件夹"

好处是只有一个插件,前提是你很熟练,不需要看代码

Model:Proxy

所有通知类的名字都做成统一常量
注意PureMVC需要保持这种格式,第一种外部可以传参数

第二种,不传data

大Data实际上是父类里面的一个属性

PlayerDataOBJ是一个玩家数据类,也就是MVC中的Model

View:Mediator

这一步很重要 3、4

ViewComponent和notification.Body(事件内容)都是object类型,调用数据更新方法

:Facade

因为小instance其实还是父类,所以返回时还得转换一下

还没有control,所以创建一下controll

这时候其实就会执行Execute里面的内容

命令:Command等

知识总结:

相关推荐
小拉达不是臭老鼠4 小时前
Unity学习_ScriptableObject
学习·unity
Thomas_YXQ5 小时前
Unity无GC读取图片与网格完整方案
大数据·人工智能·unity·微信·产品运营
jiayong237 小时前
虚幻引擎 Unreal Engine 通俗指南
游戏引擎·虚幻
郝学胜-神的一滴9 小时前
中级OpenGL教程 008:精准控制高光光斑大小与强度
c++·unity·godot·three.js·图形学·opengl·unreal
avi911111 小时前
Unity 商业插件之(五)课外2 - Zenject的一些小Tips(学习备忘)
unity·游戏开发·团结引擎
元气少女小圆丶12 小时前
SenseGlove Nova 2+Unity开发笔记4
笔记·unity·游戏引擎
basketball61612 小时前
Go 语言从入门到进阶:6. 一文彻底吃透结构体(Struct)
开发语言·unity·golang
cheniie15 小时前
如何优化大景深场景光场渲染背景模糊问题
unity·光场渲染
jiayong2317 小时前
虚幻引擎是什么?用来做什么?
游戏引擎·虚幻
易知微EasyV数据可视化17 小时前
Web+游戏引擎模式:设计的跨界协同最优解 | 数字孪生实战训练营·设计篇
前端·经验分享·游戏引擎·数字孪生·空间智能