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

微网站开发需要多少费用营销网络营销

微网站开发需要多少费用,营销网络营销,thinkphp做的网站,腾讯云备案域名前言 最近在学习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.hkea.cn/news/22714/

相关文章:

  • 网站备案拍照背景志鸿优化网官网
  • 网站百度知道怎么做推广网站搜索引擎优化的方法
  • 网站建设注意哪些问题sem和seo是什么职业岗位
  • 一_建设网站前的市场分析奶茶软文案例300字
  • 做网站智能工具江阴企业网站制作
  • 怎么看网站有没有做推广大数据营销系统多少钱
  • 广东工厂搜索seoseo平台优化服务
  • 网站开发平台 eclipseseo网站推广案例
  • 什么网站做调查能赚钱关键词优化报价推荐
  • 网站开发职业认知小结开发一个app平台大概需要多少钱?
  • 装修公司全包项目seo搜索引擎实训心得体会
  • 爱站网是干什么的长沙关键词排名首页
  • wordpress 教垜四川seo推广公司
  • 东莞市阳光网青岛seo服务
  • 网站弹窗在中间位置企业培训师
  • 整站下载器 安卓版域名解析查询站长工具
  • 跨境自建站模板seo推广是做什么
  • 网站建设与网页设计报告网络营销师报名入口
  • 生成前端页面的网站东莞网络营销全网推广
  • 网站及单位网站建设情况免费男女打扑克的软件
  • 公司有网站有什么好处网上开店如何推广自己的网店
  • 海口网站建设策划关键词排名优化工具有用吗
  • 请问哪里可以做网站汕头seo
  • 访问国外网站速度慢苏州关键词seo排名
  • 做网站备案照片的要求谷歌seo教程
  • wordpress站点全屏新站如何让百度快速收录
  • wordpress 会议 主题推广排名seo
  • 源码开发网站建设sem与seo的区别
  • 如何查网站的空间防恶意点击软件
  • 单位网站建设收费标准互联网推广引流