跳转至

游戏 UI 框架设计概览

Unity 手游实战:从 0 开始 SLG——UI 框架篇(一)各种 UI 框架模型简介(试读篇) - 知乎 (zhihu.com)

MVC、MVVM、MVP M-V- X 本质都是一样的 重点还是在于 M-V 的桥梁,要靠 X 来牵线。

在相同技术栈下 能够实现的各种 X 都可以是大同小异的。

在不同技术栈下 相同的 X 可能实现都大相径庭,仅有非常抽象的流程类似。

MVC

Pasted image 20240721230919.png 优点: 局部生态的自给自足。考虑了大部分的交互和变更情况,并通过规定每个部分的职能来满足功能需求。

缺陷: 1.局部生态,数据(M 层)封闭,如果多个模块需要同一个数据块,数据之间的互通和重用性都非常的低效。

2.局部耦合,虽然在大的环境下实现了局部封闭,但是局部内的各个层之间的逻辑耦合还是很深。

MVP

有需求就要有变化,当一个需求只是个别现象的时候,你可以特殊处理、特殊对待。但需求大批量出现的时候,就得重新审视现在的实现是不是需要重构或者升级了。

MVP 即 Model-View-Presenter。

  • Model 的工作就是完成对数据的操纵,数据的获取、存储、数据状态变化都是 model 层的任务,如网络请求,持久化数据增删改查等任务
  • View 只处理视图相关,不做任何逻辑处理。
  • Presenter 作为桥梁,处理所有二者之间的中转。
  • Pasted image 20240721231407.png

M-V-VM

Pasted image 20240721231510.png

1.使用 ViewModel 替代了 Presenter。

2.原本 P 和 V 一对一的关系现在变为 VM-V 一对多的关系。

这解决了什么问题呢?

1.VM 在一定程度上能够重用,就表示 M 层在一定程度上也可以复用了。

2.VM 一对多的关系,表示在类和文件的数量和管理上要减轻很多。

MVE

作为网络游戏来说,数据应该来自两个部分,一部分是策划编辑的数据,一部分是通过服务器下发的数据。界面通过注册事件来订阅指定的事件类型,数据中心通过和服务器之间的交互来获得或者改变数据,并根据需求推送指定的 Event,当界面关心的事件发生的时候,它有两个可能,一部分是动态变化的局部更新,可以通过事件带下来,另外一种是整体数据需要去数据中心获取。