当前位置: 首页 > news >正文

找人做网站被骗 公安不管做app推广去哪找商家

找人做网站被骗 公安不管,做app推广去哪找商家,工程科技 网站设计,卖网店哪个平台可靠前言 最近在学习Unity游戏设计模式,看到两本比较适合入门的书,一本是unity官方的 《Level up your programming with game programming patterns》 ,另一本是 《游戏编程模式》 这两本书介绍了大部分会使用到的设计模式,因此很值得学习 本…

在这里插入图片描述


前言

最近在学习Unity游戏设计模式,看到两本比较适合入门的书,一本是unity官方的 《Level up your programming with game programming patterns》 ,另一本是 《游戏编程模式》

这两本书介绍了大部分会使用到的设计模式,因此很值得学习

本专栏暂时先记录一些教程部分,深入阅读后续再更新


文章目录

  • 前言
  • 那么什么是MVC?
  • MVP架构
  • 示例:用MVP完成上述的技能系统


那么什么是MVC?

MVC架构是本系列的重中之重,MVC框架相信大部分程序员(尤其做前后端的)都不会陌生。MVC的全称是Model-View-Controller(模型-视图-控制器),由于Controller才是中间部分,也许MCV更适合它?

Improve Your Unity Code with MVC/MVP Architectural Patterns

在这里插入图片描述

MVC 背后的一般思想是将软件的逻辑部分数据UI(显示窗口) 分开。这有助于减少不必要的依赖关系。
顾名思义,MVC 模式将应用程序拆分为三层:

  • Model存储数据:模型严格来说是一个保存值的数据容器。它不执行游戏逻辑或运行计算。
  • View是界面:视图在屏幕上格式化和呈现数据的图形表示。
  • Controller处理逻辑:把它想象成大脑。它处理游戏数据并计算值在运行时的变化情况。

(在Unity中,通常数据返回不是直接由Model给View,依然需要借助Controller进行)

在这里插入图片描述


Model负责数据的存储,它负责在运行时保存一些基本数据和状态,也需要管理例如UI相关的一些数据,它会包含一定的数据持久化的功能,但是不等同于存档这类完全持久化。因为它的主要目的是准确且有意义的表示数据,而非存储和检索数据。

举个例子,Model可以用于管理一些游戏中类的序列化信息,或者玩家游戏设置选项的状态,这些状态在游戏中是实时更新的,且不需要进行增删改查等复杂的数据操作。


View是一个展示窗口,在Unity中就是UI。我们玩家不会直接对数据进行操控,但是我们可以看到View给我们返回的数据信息,并对View进行控制。玩家对数据的所有控制都应该通过View类来进行。由于View在Unity中通常都是UI,所以我们通常会让View继承MonoBehaviour类。(Controller和Model是否继承Mono其实都可以)


Controller是控制器,当玩家操作View的时候,View需要触发Controller的数据处理逻辑,并实时更新Model中的数据。

一般来说User和Controller之间是没有交互逻辑的,上图中有些特殊,User直接和Controller之间进行了交互,这是因为游戏中的User往往是游戏人物,所以本质上游戏人物也属于View的一类,通常需要将Controller相关脚本挂载在游戏角色上,因此可以通过设备按键来访问Controller中的逻辑。


MVC框架的核心是单一责任,即每部分只完成一件事情


MVP架构

在这里插入图片描述

在Unity中,MVC的一种变体——MVP架构更适合游戏开发。MVP架构的流程更加线性,由用户使用View,View通过Presenter来修改Model,Model的返回值也将通过Presenter触发对View的显示修改。

在这里插入图片描述

将MVP架构放到一个完整的游戏系统中,如上述所示,首先玩家通过View的Button点击事件触发技能释放。按钮事件中注册了Controller中的一些事件,因此Controller中的事件触发——技能被放入了技能释放队列(上图中这个队列是命令模式,存储了一系列命令并让Controller执行),并由Timer来计算冷却时间。并且在释放技能后,Model中的属性要产生对应变化——例如蓝量减少。

将MVP架构中加入事件总线,那么在Controller中还需要将事件的触发信息传输给事件总线,让总线中的其他事件也接收到技能触发的信息以进行相应操作——例如怪物接受到了技能触发的通知,则触发受伤事件。

上述架构中的View不完全等于UI组件,可以是包含一系列UI组件的一个类,并设置一些UI更新的方法——只要控制View更新的逻辑本身不在View中执行即可。

最后,上述的所有MVC脚本,都被一个继承了MonoBehaviour的Ability System统一管理,因为Controller并没有继承MonoBehaviour,这样就可以根据Unity 的生命周期在Update中调用Controller的Update方法了。


示例:用MVP完成上述的技能系统

请添加图片描述

先晒一下结构图,整个结构不会很复杂,只是涉及到的类比较多

最核心的理念是,Model和View是一定不能耦合的,只能通过Controller这个中间系统来进行交互,由Controller来执行逻辑,而对于事件的处理只需要Controller向事件总线发送消息,由注册了事件总线的监听者们接收到消息后自行处理数据。

而视图逻辑则只定义在View中(如按钮接受Input后触发事件)。Model则只负责处理本身的数据。View和Model之间彼此是不知道对方的存在的。

一般由View发送指令给Controller,Controller中读取了Model,调用内部事件处理View和Model的交互以实现Model的读写,再返回视图处理给View改变视图。这样的调用事件发生顺序就是MVP的体现。所以Unity中的MVC大部分还是以MVP为主。事件调度是较为线性的。

通常Model不继承MonoBehaviour,因为Model类只管理数据,数据不需要生命周期处理。所有的程序的生命周期处理只会再Controller和View中,所以这两个常常需要继承MonoBehaviour。

在这里插入图片描述

我们使用MVC架构,在AbilitySystem中定义了技能栏中技能属性(AbilityItem,继承了ScriptableObjects)并初始化,在点击属性对应的键盘Key值时,触发了View中组件的生命周期事件,从而调用了Controller中为组件注册的委托,委托调用后Controller发送了一条技能事件消息:AbilityEvent,因此所有在AbilityEvent Bus中注册的对象们接收到消息后都进行了对应的处理。可以看到提示了使用技能消耗的血量和蓝量,每个技能对应进入CD状态,而血条和蓝条需要对应产生改变(同一个消息,由不同对象自行处理)。

http://www.dinnco.com/news/40001.html

相关文章:

  • 做公司网站多钱如何自己开发一个网站
  • 网站图片如何做超链接长尾关键词挖掘工具爱网站
  • 广告品牌营销策划公司信阳网站seo
  • 软件开发是什么行业网站应该如何进行优化
  • 网站构建规划书免费发布平台
  • 利用excel做填报网站企业网站建设需要多少钱
  • wordpress主题演示导入武汉seo排名公司
  • 广东省珠海市香洲区疫情最新消息成都公司网站seo
  • 旅游网站开发的国内外现状培训机构网站模板
  • 做网站的公司怎么转型企业老板培训课程
  • 推广网站利润购物网站推广方案
  • 公司网站升级改版方案优化网站标题
  • 南联企业网站建设什么是优化
  • 做网站为什么要备案照相厦门百度推广开户
  • c 怎么做网站开发湘潭高新区最新新闻
  • 网站建设的难点广告推广赚钱
  • 东营网签查询系统官方网站seo管理系统培训
  • c h5网站开发互联网营销平台
  • 这么做介绍网站的ppt商品推广与营销的方式
  • 电商平台网站模板联盟营销平台
  • 廊坊网站建设技术支持市场营销证书含金量
  • 简单网站制作代码html简单网页代码
  • 网站外包注意事项杭州百度seo代理
  • 网站建设沈阳官方网站百度一下
  • 盐城手机网站制作nba交易最新消息汇总
  • 佛山网站建设科技公司宁波seo资源
  • 网站开发的教学视频新闻稿撰写
  • 网站页面组成网页模板
  • 上海做网站培训班cpv广告联盟
  • 用笔记本电脑能建设网站吗网络销售平台排名前十