UE4(Unreal Engine 4)基本概念

目录

术语简表

游戏运行:

游戏入口:GameMode

GameModeBase

游戏状态:GameState

主要组成部分:

组件(Component)

Actor

Actor组成

常见Actor类——可被控制器控制的游戏角色

常见Actor类——控制器

Object

虚幻4提供的工具:

开发方式

蓝图

C++

混合使用

参考:


术语简表

参考:https://docs.unrealengine.com/4.26/zh-CN/Basics/UnrealEngineTerminology/

下表左侧是 Unity 中的常见术语,右侧则是对应的(或差不多的)虚幻 4 术语。


游戏运行:

游戏入口:GameMode

即使最开放的游戏也拥有基础规则,而这些规则构成了 Game Mode。在最基础的层面上,这些规则包括:

  • 出现的玩家和观众数量,以及允许的玩家和观众最大数量。

  • 玩家进入游戏的方式,可包含选择生成地点和其他生成/重生成行为的规则。

  • 游戏是否可以暂停,以及如何处理游戏暂停。

  • 关卡之间的过渡,包括游戏是否以动画模式开场。

Game Modes 的任务都是定义和实现规则。Game Modes 当前常用的基类有两个。

UE在4.14 版本中加入了 AGameModeBase,这是所有 Game Mode 的基类,是经典的 AGameMode 简化版本。AGameMode 是 4.14 版本之前的基类,仍然保留,功能如旧,但现在是 AGameModeBase 的子类。由于其比赛状态概念的实现,AGameMode 更适用于标准游戏类型(如多人射击游戏)。AGameModeBase 简洁高效,是新代码项目中包含的全新默认游戏模式。

GameModeBase

游戏状态:GameState

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

  • 游戏已运行的时间(包括本地玩家加入前的运行时间)。

  • 每个个体玩家加入游戏的时间和玩家的当前状态。

  • 当前 Game Mode 的基类。

  • 游戏是否已开始。


主要组成部分:

组件(Component)

组件(Component) 是可以添加到Actor上的一项功能。

当你为Actor添加组件后,该Actor便获得了该组件所提供的功能。例如:

  • 聚光灯组件(Spot Light Component)允许你的Actor像聚光灯一样发光,

  • 旋转移动组件(Rotating Movement Component)能使你的Actor四处旋转,

  • 音频组件(Audio Component)将使你的Actor能够播放声音。

组件必须绑定在Actor身上,它们无法单独存在。

在为 Actor 添加组件时,你就是在拼凑构成 Actor 的零碎部分。 例如,汽车上的车轮、方向盘以及车身和车灯等都可以看作组件,而汽车本身就是 Actor。

Actor

Actor 是虚幻 4 中最常见的用于游戏的类,并是唯一能够在 世界 中 生成 的类。因此所有可以放入关卡的对象都是 Actor,比如摄像机、静态网格体、玩家起始位置。Actor支持三维变换,例如平移、旋转和缩放。可以通过游戏逻辑代码(C++或蓝图)创建(生成)或销毁Actor。

在C++中,AActor是所有Actor的基类。

Actor组成

在某种意义上,Actor 可被视为包含特殊类型 对象(称作组件component)的容器。 不同类型的组件可用于控制Actor移动的方式及其被渲染的方式,等等。Actor的其他主要功能是在游戏进程中在网络上进行属性复制 和函数调用。

  • UActorComponent:这是基础组件。其可作为Actor的一部分被包含。如果需要,其可进行Tick。ActorComponents与特定的Actor相关联,但不存在于场景中的任意特定位置。它们通常用于概念上的功能,如AI或解译玩家输入。

  • USceneComponent:SceneComponents是拥有变换的ActorComponents。变换是场景中的位置,由位置、旋转和缩放定义。SceneComponents能以层级的方式相互附加。Actor的位置、旋转和缩放取自位于层级根部的SceneComponent,层级根部的SceneComponent即为Root Component

注意:Actor不直接保存变换(位置、旋转和缩放)数据;Actor 有一个 Root Component,作为Actor根的组件, 指定了 Actor 在世界中的位置、角度及缩放比例,且这些属性会影响该 Actor 的所有子对象。

即便你只放置一个空 Actor,虚幻 4 也会为它创建一个"默认场景根(Default Scene Root)"对象,这是一个最简单的场景组件。当你放置一个新的场景组件时,默认场景根对象会被替换掉。

  • UPrimitiveComponent:PrimitiveComponent是拥有一类图像表达(如网格体或粒子系统)的SceneComponent。诸多有趣的物理和碰撞设置均在此处。

 如下图为在UE编辑器中创建蓝图类时提供的组件类解释:

常见Actor类——可被控制器控制的游戏角色

  • Pawn - Actor 的一种类型,用于表现一个可供控制的游戏对象,比如玩家操控的角色。玩家或者 AI 通常通过 Controller 来控制并移动 Pawn。

  • Character - 一种特殊类型的 Pawn,用于双足类型的角色,并具备一些复杂的功能。

常见Actor类——控制器

  • 玩家控制器(Player Controller)  - 一个更为特殊的 Controller,用于从玩家的手柄、触控板、鼠标/键盘获得输入信息,并将这些信息驱动玩家所控制的 Pawn 或者 Character 的行为。

    Player Controller会获取游戏中玩家的输入信息,然后转换为交互效果,每个游戏中至少有一个玩家控制器。玩家控制器通常会控制一个Pawn或角色,将其作为玩家在游戏中的化身。

    玩家控制器还是多人游戏中的主要网络交互节点。在多人游戏中,服务器会为游戏中的每个玩家生成一个玩家控制器实例,因为它必须对每个玩家进行网络函数调用。每个客户端只拥有与其玩家相对应的玩家控制器,并且只能使用其玩家控制器与服务器通信。

    相关的C++类是 PlayerController

  • AI控制器(AIController 通过控制Pawn来表示游戏中的非玩家角色(NPC)。默认情况下,Pawn和角色最终都会由基本的AI控制器控制,除非它们被指定通过玩家控制器(Player Controller)控制,或被告知不需要为它们自己创建AI控制器。关联的C++类是 AIController

Object

另外一个需要知道的关键类是 Object。Object 实际上是所有虚幻引擎的类的基类,包括 Actor 以及其他一些类都是如此。这是一个比 Actor 更加底层的类,但作为虚幻中的类,它仍拥有一些基本功能,比如 反射 和 序列化。Object 是一个非常基础的类,当我们需要定义一个新的类但又并非 Actor 的时候会使用它。比如 Actor Component 是所有组件的基类,而它则是继承 Object 而非 Actor。



虚幻4提供的工具:

参考:https://docs.unrealengine.com/4.26/zh-CN/Basics/ToolsAndEditors/

开发方式

虚幻 4 采用 (Gameplay 框架)[(InteractiveExperiences/Framework)] 来协同各种特殊的 Actor 一起工作。

Gameplay 框架利用一些基础类,并且遵循特定规范,就能省去很多造轮子的工作,否则你自己实现可能要花费很多时间,而且也很困难,或者很难改造。(比如完整的多人游戏支持!)

要使用 Gameplay 框架,你只需要了解一些预制的 Actor 类,比如 PawnCharacter,和 Player Controller,并逐步了解虚幻的网络复制和网络其他功能。

蓝图

蓝图可视化脚本适合实现简单的游戏逻辑以及按顺序进行的事件。这个系统对策划、美术以及面向可视化编程的程序员是非常好用的,它能以可视化的方式轻松访问并管理游戏内对象。你完全可以仅凭蓝图完成一个游戏的制作。请参考 Tappy Chicken 示例,它是一个完整的范例。

C++

C++ 编程适合用于大型任务,比如编写某个游戏逻辑系统,制作复杂的 AI 行为,或者新增引擎功能。对于已经掌握了 C++ 技能的开发人员来说,可以翻阅一下 在虚幻 4 中的 C++ 编程简述 页面。

混合使用

大部分的项目都适合混合使用蓝图和 C++。很多开发者都用蓝图来创作游戏原型,因为这个过程容易而且有趣,但之后出于性能优化、项目优化等考量,会把它们迁移到 C++ 中。

此外,蓝图类也能扩展 C++ 类。

参考:

https://docs.unrealengine.com/4.26/zh-CN/Basics/UnrealEngineForUnityDevs/

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值