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等

知识总结:

相关推荐
June bug4 小时前
【领域知识】休闲游戏一次发版全流程:Google Play + Apple App Store
unity
星夜泊客6 小时前
C# 基础:为什么类可以在静态方法中创建自己的实例?
开发语言·经验分享·笔记·unity·c#·游戏引擎
dzj20217 小时前
PointerEnter、PointerExit、PointerDown、PointerUp——鼠标点击物体,则开始旋转,鼠标离开或者松开物体,则停止旋转
unity·pointerdown·pointerup
心前阳光8 小时前
Unity 模拟父子关系
android·unity·游戏引擎
在路上看风景11 小时前
26. Mipmap
unity
咸鱼永不翻身13 小时前
Unity视频资源压缩详解
unity·游戏引擎·音视频
在路上看风景13 小时前
4.2 OverDraw
unity
在路上看风景14 小时前
1.10 CDN缓存
unity
ellis19701 天前
Unity插件SafeArea Helper适配异形屏详解
unity
nnsix1 天前
Unity Physics.Raycast的 QueryTriggerInteraction枚举作用
unity·游戏引擎