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等

知识总结:

相关推荐
la_vie_est_belle12 小时前
Pygame Studio——用Python自制的一款可视化游戏编辑器
python·游戏·编辑器·游戏引擎·pygame·pyside6·pygame-ce
LF男男1 天前
GameManager.cs
unity
晴夏。2 天前
c++调用lua的方法
c++·游戏引擎·lua·ue
RPGMZ2 天前
RPGMakerMZ 地图存档点制作 标题继续游戏直接读取存档
开发语言·javascript·游戏·游戏引擎·rpgmz·rpgmakermz
郝学胜-神的一滴2 天前
[简化版 GAMES 101] 计算机图形学 07:图形学投影完全推导
c++·unity·图形渲染·three.js·unreal engine
晴夏。2 天前
UE垃圾回收的全方面讲解(通俗易懂)【底层实现、触发方式、引用保持、优化、工具】
ue5·游戏引擎·ue·垃圾回收
相信神话20213 天前
3.2《酒魂》规则设计文档
游戏引擎·godot·2d游戏编程·godot4·2d游戏开发
Avalon7123 天前
Unity3D响应式渲染UI框架UniVue
游戏·ui·unity·c#·游戏引擎
风酥糖3 天前
Godot游戏练习01-第33节-新增会爆炸的敌人
游戏·游戏引擎·godot
ellis19703 天前
Unity UI性能优化一之插件【Unity UI Optimization Tool】
unity·性能优化