巫人 发表于 2021-8-21 11:43

请各位解答下我对MVC模块的一点疑问

先上下我对MVC框架的理解版图,MVC适合做UI我就直接做的UIhttps://i.loli.net/2021/08/21/y4PpHRqcCG3eStN.png
上面这图我觉得我理解的应该没问题,看网上说的好多都很模糊,我这图也是参考了好几个博客画的。
问题:
1.我的Model层读取JSON文件,但是读取出来是T类型的,所以M层没办法做查询,传了个委托出去交给用户层做查询了。要是想在M层做的话,得做成个工厂模式,但是解析JSON出来的数组你懂的,list dictionary各种嵌套,又没办法规范JSON格式,所以工厂模式也难做。不知道这层各位友友怎么解决的。


2.我画的图是理应C层和用户做交互,但是写着写着就把C层当入口了,M层是静态的随便调,V层是实例对象,由C层找到V层对象来调用V层方法,写了大半天还是从别处调用了M,V,C就感觉是个摆设,有没有小型一点的开源工程可以让我参考一下。。或者大家直接给我解惑也好。


3.如果是C层要接收用户输入的话,举个例子:例如InputField接受用户输入,因为事件定义在V层,所以用户输入的信息我现在就直接传入了V层然后返回到了用户层,现在到底是该用户层处理这些信息,还是这里边哪一层来处理?
因为我做的是Unity的项目,代码又多,就不劳烦大家看我代码了,就事论事就行了(PS:实际是楼主看不懂C#以外的代码){:301_971:}

EnterpriseSolu 发表于 2021-8-21 12:22

这个不用自己多思考,看网上的例子是怎么处理的,或是github找几个DEMO来学习一下,MVC,MVP,领域驱动设计,都是概念,越看越糊涂

巫人 发表于 2021-8-21 13:03

EnterpriseSolu 发表于 2021-8-21 12:22
这个不用自己多思考,看网上的例子是怎么处理的,或是github找几个DEMO来学习一下,MVC,MVP,领域驱动设计, ...

有没有例子可以甩我几个。。那什么csdn上的水的一批,太小型了根本没参考价值,github又不会搜,麻烦老哥了,提前谢谢你

whofly 发表于 2021-8-21 14:43

楼主多看看视频学习

Eaglecad 发表于 2021-8-21 14:52

简单理解就是 model是存数据的,view是显示数据的,C/D就是编辑数据的。

巫人 发表于 2021-8-21 16:40

whofly 发表于 2021-8-21 14:43
楼主多看看视频学习

视频看了,太水了,都是培训机构的视频

巫人 发表于 2021-8-21 16:44

Eaglecad 发表于 2021-8-21 14:52
简单理解就是 model是存数据的,view是显示数据的,C/D就是编辑数据的。

这么说我也知道,但是还得细分啊,分出来就是我这样的,但是我感觉我的还不够细,所以想大家给指点一下

troybug 发表于 2021-8-21 17:32

感觉MVC是Web开发的概念,强行套进Unity可能不太合适。Controller是用来控制显示哪个View的,但是Unity中没有URL可以让你输入,不过可以LoadScene。我一般将Entity定义好后,再用一个脚本负责初始化。
Entity(Model)
    EnemyModel.cs--   class Enemy    int id; int hp;...
Scene
    InitEnemy.cs-- webrequest加载json,然后new Enemy() 填充各种数据,并添加到场景中,保存一个List<Enemy>,用来维护,比如销毁
Enemy
    Enemy.cs   -- 控制逻辑,可以动态挂载也可以在prefab中先挂载好

我是自己摸索的,也没有找到官方提供的最佳方案

巫人 发表于 2021-8-22 10:33

troybug 发表于 2021-8-21 17:32
感觉MVC是Web开发的概念,强行套进Unity可能不太合适。Controller是用来控制显示哪个View的,但是Unity中没 ...

我想法和你不一样,我为了节省内存所有UI控件都没挂脚本,UI是以panel为单位的所以我只在panel上面挂了uiviewer用来管理,场景中还挂了uimanager管理和搜索uiviewer,这样做出来就不用每个控件上面都挂脚本了。外界交互入口是manager,然后才是到M,V层。
我看了好多地方都说MVC是适用于UI的,url不只网络协议呀,还有本地的。另外原始的mvc肯定不适合unity,但大概观念一定是适配的,业务分离对于做ui就很适合。
给你看下我的大致代码,很水的随便看看就好了{:301_971:}
https://i.loli.net/2021/08/22/W52qsxHEIZYRy4v.png
页: [1]
查看完整版本: 请各位解答下我对MVC模块的一点疑问