UMVCSL3——Model和Proxy
UMVCSL3——Model和Proxy
本章代码关键字
12345Proxy //Proxy基类,任何在PureMVC内作为Proxy代理的类都应该继承该类,可以实现对其关联数据的操作proxy.Name //字符串常量,其派生类里可以覆盖该Name,使用自己的字符串作为名字proxy.proxyName //获取该proxy派生类的Nameproxy.Data //该proxy派生类对象关联的Model类对象Proxy(string proxyName, object data = null) //Proxy的构造函数,继承该类必须要声明构造函数调用该构造函数,用于初始化名字和关联的对象
Model
这里的 Model 就是数据结构类,单纯存储内容的类
123456789 ...
UMVCSL2——框架导入和通知名类
UMVCSL2——框架导入和通知名类
关于PureMVC的版本
进入 PureMVC C# 的Github页面后,在学习阶段,我们使用其单核版本也就是标准版
下面这个页面就是标准版
标准版和多核版区别简单来说就是:
下图的Facade是否有多个,标准版就只有一个
如果是多核版,Facade对象可以有多个,用于各个子系统的管理
导入框架
下载源代码,并使用Visual Studio生成dll文件(使用VS2022生成的dll文件导入到Unity2021版本下会报错!原因未知)(该方法会更加安全)
请注意!生成dll文件的操作务必不要在Unity编辑器正在打开的项目的文件夹下操作,否则会生成大量的没有必要的文件,且Unity编辑器会报错
右键选择生成即可
之后在:源代码根目录/PureMVC/bin/Debug/(.Net版本) 路径下,得到PureMVC.dll
将该dll文件导入到项目的Plugins文件夹下即可
将PureMVC的核心源代码直接导入到Unity文件夹内(PureMVC文件夹下)
通知名类
PureMVC结构中的这些箭头就是通 ...
UMVCSL1——PureMVC
UMVCSL1——PureMVC
PureMVC
基于MVC思想和一些基础设计模式建立的一个轻量级的应用框架,是一个免费开源框架
它最初是执行的ActionScript 3语言使用的,现在已经移植到几乎所有主流平台
PureMVC的中文文档:PureMVC_IIBP_Chinese.pdf
PureMVC如何获取
官方网址:http://puremvc.org/
PureMVC的基本结构
MVC + …
代理模式
中介者模式
外观模式
观察者模式
单例模式
Model(数据模型)
关联Proxy(代理)对象,负责处理数据
View(界面)
关联Mediator(中介)对象,负责处理界面
Controller(业务控制)
管理Command(命令)对象,负责处理业务逻辑
Facade(外观)
是MVC三者的经纪人,统管全局
可以获取代理、中介、命令
Notification
通知,负责传递信息
总结
PureMVC是什么 —— 基于MVC思想的第三方开源框架
PureMVC如何获取 —— 官方网站前往Github获取
PureMVC的基本结构 ...
UMVCL11——MVE基本实例
UMVCL11——MVE基本实例
MVE基本实例
还是和上一章相同的UI需求
假设我们有一个主面板,它的各个UI控件需要的效果如下
有一个选角面板,它的各个UI控件需要的效果如下
前置知识
本章的代码编写使用了Unity小框架的UI管理器和UI基类以及事件中心,需要先学习这方面内容才能理解下列代码
并基于MP的代码进行修改
Model
相比之前的MVC的Model,这里不再需要向自己去触发数据更新的事件,而是直接向事件中心去触发事件
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712 ...
UMVCL10——MVX 之 MVE
UMVCL10——MVX 之 MVE
MVE
注意:MVE为拓展思想,是个人总结,讲解目的是拓展大家的思路
全称为模型(Model)—视图(View)—事件中心(EventCenter)
Model提供数据,View负责界面,EventCenter负责数据传递
View第一次显示获取Mode数据用于更新自己,并通知事件中心监听事件
数据更新时(玩家操作或者服务器更新)通过告知事件中心触发并分发事件
数据从事件中心流入View中进行更新
MVE的好处
利用事件中心的观察者模式,让M和V层的之间的关系更加灵活多变
减少了目前数据层的负载,将数据层事件全部交由事件中心处理
注意
讲解MVE的主要目的,是让大家对事件传递这种形式建立一个概念,为之后的pureMVC讲解做热身
观察者设计模式是解耦的一大利器
UMVCL9——MP(MVVM)基本实例
UMVCL9——MP(MVVM)基本实例
MP(MVVM)基本实例
还是和上一章相同的UI需求
假设我们有一个主面板,它的各个UI控件需要的效果如下
有一个选角面板,它的各个UI控件需要的效果如下
前置知识
本章的代码编写使用了Unity小框架的UI管理器和UI基类,需要先学习这方面内容才能理解下列代码
Model
直接使用MVC那一章的Model代码即可
Panel
笔者注:实际学习时使用的对老师课上小框架的改编,实际代码可能与课上不符,你可以忽略掉那些意义不明的参数
找控件 通过集成小框架中的UI基类实现了(只需要通过控件名即可获取控件)
逻辑处理
数据更新
MP_MainPanel.cs
123456789101112131415161718192021222324252627282930313233343536373839404142using UnityEngine.UI;public class MP_MainPanel : BasePanel{ //1.找控件 通过集成小框架中的UI基类实现了 //2.逻辑处理 //3.数据更新 ...
UMVCL8——MVX 之 MVVM
UMVCL8——MVX 之 MVVM
MVVM
全称为模型(Model)—视图(View)—视图模型(ViewModel)
Model提供数据,View负责界面,ViewModel负责逻辑的处理
MVVM的由来是MVP(Model-View-Presenter)模式与WPF结合应用时发展演变过来的一种新型框架
MVVM和MVP的对比
什么是数据绑定
将一个用户界面元素(控件)的属性,绑定到一个类型(对象)实例上的某个属性的方法。
如果开发者有一个 MainViewMode 类型的实例,那么他就可以把 MainViewMode 的 "Lev" 属性绑定到一个UI中Text的 "Text" 属性上。
“绑定”了这2个属性之后,对 Text 的 Text 属性的更改将“传播”到 MainViewMode 的 Lev 属性,
而对 MainViewMode 的 Lev 属性的更改同样 会“传播”到 Text 的 Text 属性
MVVM在Unity中水土不服
View对象始终由我们来书写,并没有UI配置文件(如WPF中 ...
UMVCL7——MVP基本实例
UMVCL7——MVP基本实例
MVP基本实例
还是和上一章相同的UI需求
假设我们有一个主面板,它的各个UI控件需要的效果如下
有一个选角面板,它的各个UI控件需要的效果如下
该UI的MVC的代码逻辑如下:
Model层
直接使用MVC那一章的Model代码即可
View层
相比MVC的那一章,这里的View层代码不一定需要再提供更新控件显示的方法了,只需要管理控件即可
更新控件的实现交给Presenter(主持人)层脚本实现
MVP_MainView.cs
12345678910111213141516171819202122232425using UnityEngine;using UnityEngine.UI;public class MVP_MainView : MonoBehaviour{ public Text txtName; public Text txtLev; public Text txtMoney; public Text txtGem; public Text txtPower; public But ...
UMVCL6——MVX 之 MVP
UMVCL6——MVX 之 MVP
MVP
全称为:模型(Model)—视图(View)—主持人(Presenter)
Model提供数据,View负责界面,Presenter负责逻辑的处理
它是MVC的一种变式,是针对MVC中M和V存在耦合的优化
MVP和MVC的对比
MVP与MVC有着一个重大的区别:
在MVC中View会直接从Model中读取数据而不是通过Controller
而在MVP中View并不直接使用Model,它们之间的通信是通过Presenter来进行的,所有的交互都发生在Presenter内部。
如何理解MVC中V会从M中读取数据
很明显,Controller在这里只是起到了将Model层代码传入到View层方法的作用
MVP的作用
MVP中的Presenter(主持人)将完全断绝View和Model的来往,主要程序逻辑都在Presenter中实现
也因此,Presenter层就会相对“较重”,代码较多
UMVCL4——使用MVC前后的对比
UMVCL4——使用MVC前后的对比
使用MVC的得到的改进
以前将数据管理,业务逻辑,用户界面糅合在一起的面板逻辑,
在使用MVC思想重新编写后,我们将数据,界面,业务逻辑三者分离
文件结构也有所改变:
在使用MVC思想重新编写面板脚本后,面板交互的执行逻辑清晰了:
View(界面)触发事件 ——> Controller(业务)处理了业务,触发了数据更新 ↓
View更新数据 <—— Model(带着数据)回到了View <—— 更新Model的数据↙
其中:
数据:负责增删查改获取界面上需要的数据
界面:负责获取控件,更新控件信息
控制:负责业务逻辑处理,界面事件监听,触发数据更新,触发界面更新
MVC的好处
各司其职,互不干涉 —— 编程思路更清晰
有利开发中的分工 —— 多人协同开发时,同步并行
有利于组件重用 —— 功能变化小时,提高开发效率
MVC的缺点
增加了程序文件的体量 —— 脚本由一变三
增加了结构的复杂性 —— 对于不清楚MVC原理的人不友好
效率相对较低 —— 对象之间的相互跳转,这意味着始终伴随着一定开销
是否一定要使 ...