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等

知识总结:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/620452.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于SpringBoot的“口腔管理平台”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“口腔管理平台”的设计与实现(源码数据库文档PPT) 开发语言:Java 数据库:MySQL 技术:SpringBoot 工具:IDEA/Ecilpse、Navicat、Maven 系统展示 口腔管理平台结构图 管理员登录界面图 个人中心界…

【C++】unordered_map unordered_set 底层刨析

文章目录 1. 哈希表的改造2. unordered_map3. unordered_set C STL 库中,unordered_map 和 unordered_set 容器的底层为哈希表,本文将简单模拟哈希表(哈希桶),unordered_map 和 unordered_set 只需封装哈希表的接口即可…

pyside6自定义部件库和软件框架的建设记录

自定义的部件库原则上尽量做到前后端分离,接口方便,复制简单。 单选框部件 # encoding: utf-8 ################################################### # 自定义的单选框 #################################################### 对外接口&…

密码学 | 椭圆曲线 ECC 密码学入门(三)

目录 7 这一切意味着什么? 8 椭圆曲线密码学的应用 9 椭圆曲线密码学的缺点 10 展望未来 ⚠️ 原文地址:A (Relatively Easy To Understand) Primer on Elliptic Curve Cryptography ⚠️ 写在前面:本文属搬运博客,自己留…

【Linux】封装一下简单库 理解文件系统

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 一、封装一下简单库 二、理解一下stdin(0)、stdout(1)、stderr(3) 2.1、为什么要有0、1、2呢? 2.2、特点 2.3、如果我想让2也和1重定向到一个文件…

百元内的运动蓝牙耳机哪个牌子好?五大高分品牌实测推荐

在追求健康生活的当下,运动已成为许多人日常生活的一部分,而音乐更是运动时的最佳伴侣,对于预算有限的学生党或普通消费者来说,如何在百元内挑选到一款性能优越、品质可靠的运动蓝牙耳机,确实是个不小的挑战&#xff0…

医学图像分割入门-UNet理论与实践

U-Net: 用于图像分割的深度学习网络 引言 在计算机视觉领域,图像分割是一项重要的任务,旨在将图像中的每个像素分配到预定义的类别或区域。传统的图像分割方法通常基于手工设计的特征和启发式算法,但随着深度学习的发展,基于深度…

【Datawhale LLM学习笔记】一、什么是大型语言模型(LLM)

文章目录 1. 什么是大模型2. 检索增强生成 RAG一、什么是 RAG二、RAG 的工作流程 3. langChain介绍一、什么是 LangChain二、LangChain 的核心组件 4. 开发 LLM 应用的整体流程一、何为大模型开发二、大模型开发的一般流程三、搭建 LLM 项目的流程简析(以知识库助手…

长波热红外应用

长波热红外通常是指波长范围在8至14微米之间的红外辐射。这种红外辐射主要来自于物体的热能,因此也称为热红外辐射。相比于短波红外,长波热红外更适合用于测量和探测物体的温度,因为它们能够捕捉到物体辐射的长波长热能,从而提供更…

推荐:跟风用的几款在线文档编辑器超好用

在信息化浪潮中,越来越多人开始尝试并依赖在线文档编辑器进行日常的办公和学习。随着技术的不断进步,市场上的在线文档编辑器层出不穷,各有特色。今天,就来给大家推荐几款跟风用的在线文档编辑器,它们不仅功能强大&…

实现iOS App代码混淆

简介 在开发iOS应用程序时,保护代码安全是至关重要的。代码混淆是一种常用的技术,可以增加逆向工程的难度,防止他人对代码的篡改和盗用。本文将介绍如何实现iOS App代码混淆的步骤和操作方法。 整体流程 下面是实现iOS App代码混淆的整体流…

最新彩虹知识付费商城源码 V3.4

最新彩虹知识付费商城源码 V3.4,支持二级分类,多级分销,秒杀,砍价,团购,首页继续浏览,分站个人虚拟余额自定义,最新批量对接,批量下载图片,批量替换标题&…