UE4 框架介绍

这篇具有很好参考价值的文章主要介绍了UE4 框架介绍。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、序言

        我们知道每一个大型的游戏引擎,都有一个属于他们自己的架构,虚幻引擎也不例外。游戏由 GameMode 和 GameState 组成。加入游戏的人类玩家与 PlayerControllers 相关联。这些 PlayerController 允许玩家在游戏中拥有棋子,以便他们可以在关卡中拥有物理表示。PlayerControllers 还为玩家提供输入控件、平视显示器或 HUD,以及用于处理摄像机视图的 PlayerCameraManager。

二、框架基础GameMode

   GameMode设定了游戏的规则,其中包括:

  • 出现的玩家和观众数量,以及允许的玩家和观众最大数量。
  • 玩家进入游戏的方式,可包含选择生成地点和其他生成/重生成行为的规则。
  • 游戏是否可以暂停,以及如何处理游戏暂停。
  • 关卡之间的过渡,包括游戏是否以动画模式开场。

基于规则的事件在游戏中发生,需要进行追踪并和所有玩家共享时,信息将通过 Game State 进行存储和同步。这些信息包括:

  • 游戏已运行的时间(包括本地玩家加入前的运行时间)。
  • 每个个体玩家加入游戏的时间和玩家的当前状态。
  • 当前 Game Mode 的基类。
  • 游戏是否已开始  

正因为GameMode提供了游戏所需要的规则,所以它只存在于服务器上,客户端是没有的。

三、游戏状态 GameState 

        游戏玩家的状态,例如人类玩家或模拟玩家的机器人。作为游戏的一部分而存在的非玩家AI将不会拥有玩家状态。在玩家状态中适当的示例数据包括玩家姓名或得分、比赛中MOBA等的等级,或玩家当前是否在CTF游戏中携带旗帜。所有玩家的玩家状态存在于所有机器上(与玩家控制器不同),并且可以自由复制以保持同步。其中包括:

  • 已经连接的玩家列表情况。
  • 玩家团队得分情况。
  • 开放世界中已经完成的游戏任务。

Game State 负责启用客户端监控游戏状态。从概念上而言,Game State 应该管理所有已连接客户端已知的信息(特定于 Game Mode 但不特定于任何个体玩家)。它能够追踪游戏层面的属性,如已连接玩家的列表、夺旗游戏中的团队得分、开放世界游戏中已完成的任务,等等。

Game State 并非追踪玩家特有内容(如夺旗比赛中特定玩家为团队获得的分数)的最佳之处,因为它们由 Player State 更清晰地处理。整体而言,GameState 应该追踪游戏进程中变化的属性。这些属性与所有人皆相关,且所有人可见。Game mode 只存在于服务器上,而 Game State 存在于服务器上且会被复制到所有客户端,保持所有已连接机器的游戏进程更新。

四、玩家控制器(PlayerController 和 AIController)  

        控制器是非物理 Actor,可以拥有一个 Pawn(或 Pawn 派生类,如 Character)来控制其动作。人类玩家使用 PlayerController 来控制 Pawn,而 AIController 为他们控制的 Pawn 实现人工智能。控制器通过 Possess 函数控制 Pawn,并通过 Unpossess 函数放弃对 Pawn 的控制。

控制器接收他们控制的 Pawn 发生的许多事件的通知。这使 Controller 有机会实现响应此事件的行为,拦截事件并取代 Pawn 的默认行为。可以在给定 Pawn 之前使 Controller 滴答作响,从而最大限度地减少输入处理和 Pawn 移动之间的延迟。

默认情况下,Controllers 和 Pawns 之间是一对一的关系;意思是,每个控制器在任何给定时间只控制一个 Pawn。这对于大多数类型的游戏来说是可以接受的,但可能需要进行调整,因为某些类型的游戏——想到实时策略——可能需要同时控制多个实体的能力。

五、用户界面和HUD

        用户界面是指菜单和其他交互元素。这些元素通常像 HUD 一样叠加在屏幕上绘制,但在某些情况下,它们可能是游戏世界本身的一部分,渲染到世界表面上。最明显的 UI 示例是游戏启动时显示的主菜单或玩家暂停游戏时显示的暂停菜单。但是,在播放过程中可能会显示其他 UI。这些可用于在游戏中或更复杂的情况下(例如在 RTS 或 RPG 中)显示角色之间的对话,它们可能是游戏本身不可或缺的一部分,允许玩家选择武器、盔甲、要建造的单位等。

         HUD 是指在游戏过程中覆盖在屏幕上的状态和信息。HUD 的目的是告知玩家游戏的当前状态,即分数、他们的健康状况、剩余时间。

通俗来说,我们在游戏中看到的图片,文字,按钮都可以说是用户界面,能被肉眼看到的界面都可以说是用户界面。

六、相机管理者PlayerCameraManager

        PlayerCameraManager是一个相机管理器。默认情况下,它自己的内置行为是在挂起的视图目标和由控制台命令触发的调试摄像机之间混合。否则,它会向 ViewTarget 查询相机视点的操作以及所有其他相机设置。通常您不需要 PlayerCameraManager 子类 - 如果自动规则不足,除了可能添加用于设置 ViewTarget 的规则之外,需要对 PlayerCameraManager 进行少量修改。所有相机的属性和行为都在CameraComponent中设置,该类CameraActor主要用作 CameraComponent 的包装器,因此可以将相机直接放置在关卡中,而不是放在另一个类中。

在 CameraComponent 中,可以设置相机是透视模式还是正交模式。可以为透视模式设置垂直视野 (FOV),可以为正交模式设置世界单位的宽度。对于这两种模式,都可以指定纵横比,并为常用设备和显示器类型预设纵横比

  1. 后期处理效果可以添加到相机,也可以缩放后期处理效果的强度。

将两个组件添加到 CameraComponent 以帮助在编辑器中进行视觉放置,尽管它们在游戏过程中不可见。FrustumComponent显示相机视野的位置默认情况下不显示,但可以通过在视口中选择Show Advanced > Camera Frustums来打开。StaticMeshComponent 表示相机在关卡中的位置。

七、Actor类

     Actor使我们在虚幻里最常用的类,Actor是可以放置到关卡中的任何对象,例如相机、静态网格物体或玩家起始位置。Actor 支持 3D 变换,例如平移、旋转和缩放。它们可以通过游戏代码(C++ 或蓝图)创建(生成)和销毁。它可以挂上组件,使得它的灵活性和功能性更加的丰富和强大。Actor 支持具有 SceneComponent 的层次结构。每个 Actor 还具有一个RootComponent属性,用于指定哪个组件充当 Actor 的根。Actor 本身没有变换,因此没有位置、旋转或缩放。相反,它们依赖于组件的转换;更具体地说,它们的根组件。如果此 Component 是SceneComponent,它会为 Actor 提供转换信息。否则,Actor 将没有变换。其他附加组件具有相对于它们附加到的组件的变换。

综上所述,虚幻的引擎架构是基于以上的几点来进行拓展和延伸,每一个类都有自己的功能和特点,相辅相成,相互依赖,缺一不可。

UE4 框架介绍文章来源地址https://www.toymoban.com/news/detail-414663.html

到了这里,关于UE4 框架介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 关于ue4 射击游戏架构设计

    传统mmo的服务器架构 网关---游戏逻辑服---游戏db服 网关--- 游戏逻辑服---关系服务器master 其结构简单,方便维护,但是在应对射击游戏时候暴露出很大的缺陷 但是随着大dau产品的像和平精英等游戏问世 腾讯主要的服务器是基于tbus4j,基于共享内存+ socket的数据交互,该框架的

    2024年02月02日
    浏览(62)
  • UE4 回合游戏项目 01- 创建人物-玩家角色

    步骤: 1.下载游戏资源,链接:https://pan.baidu.com/s/1l2hpeEtIoFcUC4vAhut-ig 提取码:wlcp 2.解压第一节课资源 双击打开项目:  3.新建一个空白工程  设置好项目的存储路径和项目名  4.打开含有游戏资源的虚幻编辑器,右键点击内容,选择迁移  将所有的游戏资源迁移到新项目中

    2024年02月08日
    浏览(69)
  • 【UE4 塔防游戏系列】10-防御塔升级

    目录 效果 步骤 一、根据防御塔等级修改子弹伤害 二、根据防御塔等级修改子弹速度 三、根据防御塔等级修改检测半径 四、根据防御塔等级修改子弹颜色 五、根据防御塔等级修改换弹时间   一、根据防御塔等级修改子弹伤害 1. 打开“TowerBaseBullet_Child”,新建整型变量“

    2024年02月15日
    浏览(54)
  • UE4初学者设计小游戏(一)

    目录 一、设计简介及故事概要 二、环境设计与场景搭建 1. 将天空球改成黑夜 1 2. 通过画刷(BSP)搭建逃脱石头屋 2 3. 添加地形 5 4. 添加氛围元素 5 5. 感应灯 7 三、游戏机关蓝图设计 1.手电筒设计 8 2.设计开关门 9 6. 天梯设计 12 7. 加血装置 13 四、UI设计 2. 开始界面 14 3. 暂停

    2024年02月06日
    浏览(46)
  • UE4第三人称多人联机游戏开发01

    单人游戏 中一台电脑只有一个游戏会话(Session),我们可以通过在同一电脑中分屏并用不同的输入设备,单人游戏不需要使用互联网。 多人游戏 中,游戏实例在独立的两台电脑中运行,而由于玩家在不断地输入指令,因此我们需要将一个游戏实例中的信息通过互联网传输到

    2024年02月07日
    浏览(90)
  • UE4 在游戏运行时显示或隐藏鼠标

    在关卡蓝图中进行如下设置,当按下“Tab”键时显示鼠标,按第二次隐藏,以此类推: 如果希望显示鼠标的同时还能够触发点击事件,就添加如下两个节点 然后就可以在蓝图中编辑静态网格体的点击事件:

    2024年02月11日
    浏览(42)
  • 游戏开发入门ue4和unity要怎么选择?

    关于两款引擎该怎么选的问题 先从行业大环境这个角度分析: 目前市场主流是U3D,这并不意味着UE4不好。UE4的学习成本更 高且招人困难导致了大部分公司不选择用UE4去做游戏。U3D是做端游也可以,做手游格外方便,而且U3D学起来也更简单导致了市场上大部分都在用U3D开发游

    2023年04月15日
    浏览(86)
  • ue4初级UI设置一(游戏的开始界面)

    1.file——new level 创建一个新关卡。 2.打开新的关卡蓝图中的蓝图关卡:游戏一开始是创建一个游戏游戏ui界面,在增加一个视口(这样才能看到uiwidget的界面) 3.在创建好游戏一开始的ui界面后要用鼠标点击游戏开始,这时我们需要获取到游戏的控制权get player controller ——s

    2024年02月13日
    浏览(58)
  • UE4中实现鼠标拖动游戏中的物体

    一、显示鼠标光标、启用鼠标点击事件         可以在关卡蓝图中或者游戏模式中加入下面代码  二、点击物体进入选中状态  三、根据通道获取命中结果          通过这个函数可以获取当前鼠标光标下接触的actor,重新设定actor位置即可。这里可以将类型转换去掉,就可

    2024年02月11日
    浏览(54)
  • 【UE4 塔防游戏系列】06-炮塔发射子弹攻击敌人

    1. 新建一个Actor蓝图类,命名为“TotalBulletsCategory”,用来表示子弹蓝图总类,后面会有很多不同类型的子弹会继承该类 打开“TotalBulletsCategory”,添加粒子系统组件、盒体碰撞组件和发射物移动组件  调整发射物重力范围为0 添加一个变量,命名为“ChoosedEnemy”,用来表示子

    2024年02月17日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包