UE笔记1:基础知识

文章目录

  • 一、虚幻引擎术语
    • 项目 (uproject)
    • 蓝图(Blueprints)
    • 材质(Materials)
    • 对象和类
    • 类型转换
    • AActor
    • 组件
    • Pawn
    • Character
    • Player Controller
    • AI控制器
    • Player State
    • Game Mode
    • Game State
    • Brush
    • Volumes
    • Level
    • World

本笔记参考 虚幻5.1官方文档 https://docs.unrealengine.com/5.1/zh-CN/unreal-engine-terminology/

一、虚幻引擎术语

项目 (uproject)

项目是一个包含所有关联资源、游戏级别、脚本、材质和配置文件的容器。一个项目可以是一个完整的游戏、演示、原型或其他实时应用。每个UE项目都有一个特定的目录结构,用于组织和存储所有相关文件。

项目结构通常包括以下文件夹:

Content(内容):这个文件夹包含了项目中所有的资源,如3D模型、纹理、蓝图、材质、关卡和声音文件等。通常,您需要将这些资源导入到Content Browser(内容浏览器)中,以便在项目中使用。

Config(配置):这个文件夹包含了项目的配置文件,用于存储各种设置,如输入映射、游戏规则、渲染选项等。这些文件通常以.ini格式存储。

Source(源码):这个文件夹包含了项目中的C++源代码文件,包括头文件(.h)和源文件(.cpp)。如果您使用蓝图进行开发,这个文件夹可能不会包含很多内容。然而,对于使用C++进行开发的项目,这个文件夹是非常重要的。

Binaries(二进制文件):这个文件夹包含了项目的可执行文件、动态链接库(DLL)和其他二进制文件。当您构建项目时,这些文件将被生成。

Build(构建):这个文件夹包含了项目构建过程中产生的临时文件,例如中间对象文件、日志文件等。通常,您不需要直接操作这些文件。

Saved(已保存):这个文件夹包含了项目的保存文件、备份文件、缓存文件以及自动保存的关卡。在项目开发过程中,这个文件夹会随着时间的推移而变大。

Plugins(插件):这个文件夹包含了为项目定制的插件,它们可以扩展Unreal Engine的功能。插件可以是官方的,也可以是第三方的,或者由您自己开发。

当您创建一个新的Unreal Engine项目时,引擎会根据所选的模板生成这些文件夹和基本内容。模板可以是基本的游戏类型(如第一人称射击、平台游戏等)、空白项目或您自定义的模板。从模板开始可以帮助您更快地启动项目,因为它们已经包含了基本的资源、脚本和设置。

在项目开发过程中,您可以使用Unreal Editor(虚幻编辑器)来编辑关卡、资源、蓝图、材质等。您还可以使用其他工具,如Visual Studio或Xcode,来编写和调试C++代码。一旦一旦项目开发完成,您可以使用Unreal Engine的打包和发布功能,将项目构建成可在目标平台(如Windows、macOS、Linux、Android、iOS、PlayStation、Xbox等)上运行的应用程序。在打包过程中,引擎会对项目资源进行优化、压缩和封装,以确保应用程序的性能和兼容性。

在开发过程中,您可能会需要以下工具和资源:

版本控制系统:如Git、Perforce或SVN,以跟踪项目文件的更改和协同工作。
3D建模和动画软件:如Blender、3ds Max或Maya,用于创建3D模型、动画和特效。
2D图像编辑软件:如Photoshop、GIMP或Krita,用于创建纹理、UI元素和概念美术。
音频编辑软件:如Audacity、Reaper或FL Studio,用于处理游戏音效和音乐。
项目管理工具:如Trello、Jira或Asana,用于组织任务、协同工作和跟踪进度。

蓝图(Blueprints)

在Unreal Engine(UE)中,Blueprints(蓝图)是一种可视化脚本系统,允许开发者通过节点和连接线创建逻辑,而无需编写代码。蓝图系统基于UE的事件驱动架构,可以让设计师和程序员轻松地创建游戏逻辑、交互和可自定义的功能。

蓝图有四种主要类型:

蓝图类(Blueprint Class):这是最常用的蓝图类型,用于创建游戏中的角色、物体和其他实体。蓝图类可以继承现有的C++类或其他蓝图类,然后添加或修改功能。

蓝图接口(Blueprint Interface):蓝图接口允许您为蓝图类定义一组预期的功能,不同的蓝图类可以实现这些功能来保证互操作性。接口可以让您在不同的蓝图类之间共享和重用代码。

蓝图宏库(Blueprint Macro Library):这是一个包含一组蓝图宏的库。宏是可以在多个蓝图中重复使用的预定义功能。蓝图宏库可以让您轻松地重用和共享常用的蓝图逻辑。

蓝图函数库(Blueprint Function Library):这是一个包含一组蓝图函数的库。这些函数可以在其他蓝图中调用,以便在不同的蓝图之间重用和共享代码。与蓝图宏库类似,它们的主要目的是提高代码重用性和便利性。

材质(Materials)

Materials(材质)是用于定义游戏对象表面外观的资源。它们决定了物体的颜色、纹理、反射率、透明度等视觉属性。材质通过在材质编辑器中创建和连接各种节点来定义,这些节点可以表示纹理、颜色、数学运算等。

材质编辑器中的主要节点是Material Node(材质节点),它包含了多个输出插槽,用于连接到其他节点。常见的输出插槽包括:

基本颜色(Base Color):定义物体表面的颜色或纹理。
金属度(Metallic):定义物体表面的金属特性,范围从0(非金属)到1(金属)。
规范(Specular):定义物体表面对光线的反射程度。
粗糙度(Roughness):定义物体表面的粗糙程度,范围从0(光滑)到1(粗糙)。
发射(Emissive):定义物体表面发出的光。
透明度(Opacity):定义物体表面的透明度,范围从0(完全透明)到1(完全不透明)。
透明度遮罩(Opacity Mask):定义物体表面的透明遮罩,通常用于创建透明效果,例如树叶、栅栏等。
法线(Normal):定义物体表面的凹凸纹理,用于创建细节丰富的表面效果。
这些输出插槽可以连接到其他节点,如纹理采样器、数学运算节点、颜色节点等,以创建复杂的材质效果。您可以在材质编辑器中调整节点参数以实时查看结果,然后将创建的材质应用到游戏对象上。

Unreal Engine的材质系统非常强大,允许开发者创建各种现实世界和虚构材质,包括金属、玻璃、布料、水、草地等。同时,通过使用蓝图和材质实例,开发者还可以创建动态和可自定义的材质效果,例如响应游戏事件的发光材质、可以在运行时改变颜色的材质等。

对象和类

在Unreal Engine(UE)中,对象(Objects)是构成游戏世界的基本元素。通俗地说,对象就是游戏世界里的一切事物,包括角色、道具、建筑、光源、音效等。在UE中,对象是通过类(Class)来定义的。类是一个包含属性(如颜色、大小、形状等)和行为(如移动、旋转、发光等)的蓝图,用于描述对象的特性和功能。

Unreal Engine使用一个称为对象层次(Object Hierarchy)的类继承系统来组织和管理对象。这个层次结构由许多不同的类组成,每个类都继承自一个更高级的基类。基类可以被看作是更具体类的模板,它们定义了一组共享的属性和行为。具体类则添加或覆盖这些属性和行为,以创建更特定的对象类型。

UE中最基本的对象类是UObject类。它是所有其他类的基础,包含了一些基本的属性和行为,如名称、标签和垃圾回收。从UObject类派生出的一个重要类是AActor类。AActor类表示游戏世界中的所有可交互对象,如角色、道具、光源等。AActor类具有位置、旋转、缩放等变换属性,以及与游戏世界中其他对象进行交互的能力。

从AActor类派生出的一些常见类包括:

APawn:表示游戏中可控制的角色,如玩家角色或AI角色。APawn类具有输入处理和控制器交互的功能。
ACharacter:表示游戏中的人物角色,从APawn类继承而来。ACharacter类添加了移动、跳跃等基本行为,以及对动画和物理模拟的支持。
APlayerController:表示游戏中玩家的控制器,负责处理输入和控制角色。
AAIController:表示游戏中AI角色的控制器,负责处理AI逻辑和控制角色。
AStaticMeshActor:表示游戏世界中的静态几何体,如建筑、地形等。AStaticMeshActor类使用静态网格(Static Mesh)作为渲染和碰撞检测的基础,通常不涉及动画或运动。

ASkeletalMeshActor:表示游戏世界中的可动态改变的几何体,如角色、动画道具等。ASkeletalMeshActor类使用骨骼网格(Skeletal Mesh)作为渲染和碰撞检测的基础,并支持骨骼动画和物理模拟。

ALight:表示游戏世界中的光源,负责照亮场景。ALight类包括多种光源类型,如点光源、聚光源、平行光源等,每种类型都具有各自的属性和行为。

ACameraActor:表示游戏世界中的摄像机,负责捕捉场景视图。ACameraActor类支持多种投影模式,如透视、正交等,并提供了一系列相机效果,如景深、运动模糊等。

AEmitter:表示游戏中的粒子系统发射器,用于产生各种视觉效果,如火焰、烟雾、雨、雪等。AEmitter类通常与UParticleSystem组件一起使用,通过控制粒子的发射、移动、颜色、大小等属性来创建各种效果。

ASoundBase:表示游戏世界中的声音资源,包括音效、音乐等。ASoundBase类提供了播放、暂停、停止等基本音频控制功能,以及音量、音调等调整选项。

UActorComponent:表示游戏对象的组件,用于为AActor类添加功能和行为。UActorComponent类是所有其他组件类的基类,可以附加到AActor类的实例上。组件之间可以相互通信和协作,以实现复杂的游戏逻辑。

一些常见的组件类包括:

UStaticMeshComponent:用于渲染和处理静态网格的组件。
USkeletalMeshComponent:用于处理骨骼网格的组件,支持骨骼动画和物理模拟
UParticleSystemComponent:用于控制粒子系统的组件,可以实现各种视觉效果。

USceneComponent:用于构建对象的空间层次结构,提供了位置、旋转和缩放等变换属性。其他组件可以附加到USceneComponent上,以实现复杂的对象结构。

UCameraComponent:用于控制摄像机的组件,提供了一系列相机效果和投影模式设置。

UAudioComponent:用于播放和控制声音资源的组件,支持音量、音调等调整选项。

UPhysicsComponent:用于处理物理模拟和碰撞检测的组件。可以为游戏对象添加刚体、约束等物理属性。

UInputComponent:用于处理输入事件的组件,支持键盘、鼠标、触摸等输入设备。

类型转换

类型转换(Type Casting)是一种在不同类型之间转换对象引用的方法。类型转换在处理派生类和基类之间的关系时尤为重要,因为它允许你安全地访问一个对象的特定功能或属性,而不需要关心其具体实现。

类型转换有两种主要形式:向上转换(Upcasting)和向下转换(Downcasting)。

向上转换(Upcasting):
向上转换是将派生类对象的引用转换为基类引用的过程。向上转换通常是安全的,因为派生类对象包含基类的所有属性和行为。在UE中,向上转换可以使用C++的静态类型转换(static_cast)或蓝图的Cast To节点来实现。
例如,假设我们有一个ACharacter类的对象引用,我们想将其转换为AActor类引用。我们可以执行以下操作:

C++代码:

ACharacter* Character = ...;
AActor* Actor = static_cast<AActor*>(Character);

蓝图操作:
将ACharacter对象引用连接到一个Cast To AActor节点的输入端,然后从节点的输出端获取AActor引用。

向下转换(Downcasting):
向下转换是将基类对象的引用转换为派生类引用的过程。向下转换可能是不安全的,因为基类对象可能不包含派生类所需的所有属性和行为。在UE中,向下转换可以使用C++的动态类型转换(dynamic_cast)或蓝图的Cast To节点来实现。如果转换失败,将返回nullptr(C++)或无效引用(蓝图)。
例如,假设我们有一个AActor类的对象引用,我们想将其转换为ACharacter类引用。我们可以执行以下操作:

C++代码:

AActor* Actor = ...;
ACharacter* Character = dynamic_cast<ACharacter*>(Actor);
if (Character)
{
    // 转换成功,可以访问Character的属性和行为
}

蓝图操作:
将AActor对象引用连接到一个Cast To ACharacter节点的输入端,然后从节点的输出端获取ACharacter引用。如果转换成功,将触发Cast To节点的“Cast Succeeded”事件。

在进行类型转换时,务必确保转换操作是合理的。避免在不确定对象类型的情况下执行向下转换,以减少潜在的运行时错误。

AActor

AActor是所有可交互对象的基类,通常用于构建游戏世界中的各种元素,如角色、道具、光源、摄像机等。AActor类继承自UObject类,并添加了一些额外的属性和行为,使其能够在游戏世界中存在并与其他对象进行交互。

以下是AActor类的一些主要特性:

变换(Transform):AActor类具有位置(Location)、旋转(Rotation)和缩放(Scale)属性,这些属性组成了对象的变换(Transform)。变换定义了对象在游戏世界中的位置、方向和大小。你可以通过设置这些属性来移动、旋转和缩放对象。

组件(Components):AActor类可以包含多个组件(Components),这些组件用于为对象添加功能和行为。例如,添加一个UStaticMeshComponent可以使对象具有渲染和碰撞检测功能;添加一个USceneComponent可以用于构建对象的空间层次结构。组件之间可以相互通信和协作,以实现复杂的游戏逻辑。

生命周期(Life Cycle):AActor类具有自己的生命周期,包括初始化、更新、销毁等阶段。在这些阶段,AActor类提供了一系列虚函数(如BeginPlay、Tick、EndPlay等),可以被子类重写以实现自定义的行为。例如,在BeginPlay函数中,可以执行对象的初始化操作;在Tick函数中,可以执行每帧更新操作。

事件(Events):AActor类支持多种事件,如碰撞事件、触发事件、输入事件等。这些事件可以用于监听游戏中的各种操作,并触发相应的响应。例如,在对象与其他对象发生碰撞时,可以触发一个碰撞事件,用于处理碰撞后的行为。

网络同步(Networking):AActor类具有网络同步功能,可以在多个客户端之间同步对象的状态和行为。通过设置对象的Replicates属性,可以使其在服务器和客户端之间进行同步。此外,AActor类提供了一系列网络相关的虚函数(如GetLifetimeReplicatedProps、OnRep_XXX等),可以用于控制网络同步的细节。

AActor类是Unreal Engine中的核心类之一,通过继承AActor类并添加新的属性、行为和组件,你可以创建各种复杂的游戏对象。

组件

组件(Components)是一种可附加到Actor上的模块化功能单元。组件可以为Actor添加属性、行为和功能,并与其他组件进行交互以实现复杂的游戏逻辑。组件的设计遵循组合优于继承的原则,使得游戏对象的构建更加灵活和可扩展。

组件的基类是UActorComponent,它继承自UObject类。UActorComponent类定义了一些基本的生命周期函数,如 InitializeComponent、BeginPlay、TickComponent、EndPlay等,这些函数可以在派生类中被重写以实现自定义的行为。

组件必须连接到Actor,不能独自存在。

以下是一些常见的组件类型:

USceneComponent:这是一个具有位置、旋转和缩放属性的组件,它提供了空间层次结构的基础。其他组件可以附加到USceneComponent上,以形成更复杂的对象结构。USceneComponent还提供了一些辅助函数,如添加相对或世界变换等。

UPrimitiveComponent:这是一个可渲染和响应物理交互的组件,继承自USceneComponent。UPrimitiveComponent为游戏对象提供了碰撞检测和物理模拟功能,并支持多种类型的碰撞体。此外,UPrimitiveComponent还提供了一系列事件,如碰撞事件、触发事件等。

UStaticMeshComponent:这是一个用于渲染和处理静态网格的组件,继承自UPrimitiveComponent。UStaticMeshComponent使用静态网格(Static Mesh)作为渲染和碰撞检测的基础,通常不涉及动画或运动。

USkeletalMeshComponent:这是一个用于渲染和处理骨骼网格的组件,继承自UPrimitiveComponent。USkeletalMeshComponent使用骨骼网格(Skeletal Mesh)作为渲染和碰撞检测的基础,并支持骨骼动画和物理模拟。

UCameraComponent:这是一个用于控制摄像机的组件,继承自USceneComponent。UCameraComponent提供了一系列相机效果和投影模式设置,如景深、运动模糊、透视、正交等。

UParticleSystemComponent:这是一个用于控制粒子系统的组件,继承自UPrimitiveComponent。UParticleSystemComponent可以实现各种视觉效果,如火焰、烟雾、雨、雪等,通过控制粒子的发射、移动、颜色、大小等属性来创建各种效果。

UAudioComponent:这是一个用于播放和控制声音资源的组件,继承自UActorComponent。

Pawn

Pawn(棋子)是一个特殊的Actor(演员),通常代表游戏中可以被玩家或AI控制的角色。Pawn继承自AActor类,为游戏角色提供了一些基本的属性和行为,如输入处理、控制器交互等。

简单来说,Pawn就像是游戏中的棋子,可以被玩家或者AI控制器操作。它充当了控制器和游戏世界之间的桥梁,负责将控制器的指令转化为游戏世界中的实际动作。这使得Pawn可以响应键盘、鼠标、手柄等输入设备,以实现游戏角色的移动、跳跃、射击等操作。

以下是Pawn的一些主要特性:

控制器(Controller):Pawn可以与AController类(包括APlayerController和AAIController)进行交互,使得玩家或AI可以控制Pawn。通过将控制器附加到Pawn上,可以使Pawn响应来自控制器的输入和逻辑。

输入处理(Input Handling):Pawn类提供了一系列虚函数,如 SetupPlayerInputComponent、InputAxis 等,用于处理输入设备(如键盘、鼠标、手柄等)的输入。你可以在派生自Pawn的子类中重写这些函数,以实现自定义的输入处理逻辑。例如,在SetupPlayerInputComponent函数中,可以绑定按键和操作,以实现按键按下时触发相应的功能。

移动组件(Movement Component):虽然Pawn类本身不包含移动功能,但你可以通过添加一个移动组件(如UCharacterMovementComponent或UPawnMovementComponent)来为Pawn提供基本的移动能力。移动组件负责处理Pawn的移动和碰撞检测,以及实现类似重力、摩擦力等物理效果。

换位(Possession):换位(Possession)是将控制器附加到Pawn上的过程,使Pawn能够响应控制器的输入和指令。在游戏中,换位通常用于实现玩家或AI角色的切换。例如,当玩家进入新的角色时,游戏可以将APlayerController从当前的Pawn移除,并附加到新的Pawn上,从而实现角色切换。同样,AI角色也可以在不同的Pawn之间切换,以实现复杂的游戏逻辑和策略。

视图目标(View Target):Pawn通常作为摄像机的视图目标,即摄像机会跟随Pawn并调整视角以保持Pawn在视野中。通过设置Pawn的摄像机组件或将摄像机附加到Pawn上,可以实现各种视角效果,如第一人称、第三人称、俯视等。

状态(States):Pawn可以包含多个状态,用于表示其在游戏中的不同阶段或行为。例如,一个角色可以有“站立”、“跑动”、“跳跃”等状态。通过在Pawn的子类中添加状态变量并在输入处理函数中修改状态,可以实现游戏角色的各种行为和动画切换。

Character

Character(角色)是Unreal Engine中一个更具体的游戏角色类型,它继承自Pawn(棋子)类。Character类是为游戏中的人物角色设计的,它在Pawn的基础上添加了一些额外的属性和行为,如移动、跳跃、动画支持等。因此,Character类通常用于实现具有更丰富行为和交互的角色。

以下是Character与Pawn的一些主要区别:

移动组件:Character类默认包含了一个名为CharacterMovementComponent的移动组件,它是UPawnMovementComponent的一个子类。这个组件为Character提供了更丰富的移动能力,如行走、跑动、跳跃、爬梯子等。而Pawn类则需要手动添加移动组件,以实现移动功能。

动画支持:Character类支持使用Skeletal Mesh(骨骼网格)和Animation Blueprint(动画蓝图)来实现角色的动画。通过配置相应的骨骼网格和动画蓝图,你可以为Character创建逼真的角色动画,如行走、攻击、受伤等。而Pawn类没有内置的动画支持,需要自行添加和配置。

立即响应输入:Character类的输入处理通常更加直接和即时。例如,当你按下跳跃键时,Character会立即跳起。而Pawn类可能需要更多的自定义逻辑来处理输入事件,响应可能不那么即时。

碰撞胶囊:Character类包含一个碰撞胶囊(Capsule Component),用于定义角色的碰撞体积和形状。这个碰撞胶囊在游戏中起到保护角色和处理碰撞的作用。而Pawn类没有默认的碰撞胶囊,需要根据需求手动添加碰撞组件。

简而言之,Character类是一个更专门针对人物角色的Pawn子类。如果你打算创建一个具有丰富行为和交互的游戏角色,那么Character类可能是一个更好的选择。然而,如果你需要创建一个不涉及复杂人物行为的游戏对象,例如车辆、飞行器等,那么直接使用Pawn类可能更为合适。

Player Controller

Player Controller(玩家控制器)是Unreal Engine中一个用于处理玩家输入并控制游戏角色(如Pawn或Character)的特殊类。它继承自AController类,负责将玩家的操作(如键盘、鼠标、手柄等输入设备)转化为游戏世界中的实际动作。简单来说,Player Controller就是玩家与游戏角色之间的连接,让玩家能够操控游戏中的角色。

以下是Player Controller的一些主要功能:

输入处理:Player Controller负责接收来自玩家的输入事件(如按键、鼠标点击等),并将这些事件转发给当前控制的Pawn或Character。通过在Player Controller类中实现输入处理逻辑,你可以控制角色的移动、跳跃、射击等操作。

角色换位(Possession):Player Controller可以附加到不同的Pawn或Character上,实现玩家在游戏中切换控制角色。这可以用于实现多角色切换、载具驾驶等游戏功能。

摄像机控制:Player Controller通常负责控制游戏的摄像机视角。通过设置Player Controller的摄像机组件或将摄像机附加到角色上,可以实现各种视角效果,如第一人称、第三人称、俯视等。

玩家状态(Player State):Player Controller可以维护一个与玩家相关的状态对象(如APlayerState类),用于存储玩家的得分、生命值等游戏信息。这可以用于实现游戏的计分、排行榜等功能。

用户界面(User Interface):Player Controller负责管理玩家的用户界面,如显示游戏菜单、弹出提示信息等。通过在Player Controller类中创建和控制UMG(Unreal Motion Graphics)界面元素,你可以为游戏添加各种交互式UI功能。

总之,Player Controller是游戏中负责处理玩家输入并控制游戏角色的关键类。通过自定义Player Controller,你可以为游戏添加丰富的玩家交互功能和游戏逻辑。

AI控制器

就像玩家控制器操控Pawn作为玩家在游戏中的呈现方式,AI控制器(AI Controller) 操控Pawn在游戏中呈现非玩家角色(NPC)。默认情况下,Pawn和角色都以基本AI控制器终结,除非它们被玩家控制器专门操控或者收到指令不允许为自己创建AI控制器。

关联的C++类是 AIController 。

Player State

Player State(玩家状态)是Unreal Engine中用于存储和管理与玩家相关的游戏信息的类。它继承自APlayerState类,用于跟踪玩家的得分、生命值、角色名等数据。简单来说,Player State就像是玩家在游戏中的档案,记录着玩家的各种状态和成就。

以下是Player State的一些主要用途:

存储游戏数据:Player State可以存储玩家在游戏中的各种数据,如分数、生命值、金币等。通过在Player State类中定义变量并实现相应的逻辑,你可以轻松跟踪和更新这些数据。

游戏进度:Player State可以用于记录玩家的游戏进度,如关卡完成、任务完成等。通过检查和更新Player State中的数据,你可以实现游戏的进度管理和存档功能。

网络同步:在多人游戏中,Player State可以在客户端和服务器之间同步,确保所有玩家都能看到彼此的游戏数据。这对于实现排行榜、联机得分等功能至关重要。

角色信息:Player State还可以存储玩家的角色信息,如角色名、头像、等级等。这些信息可以在游戏界面中显示,以提高游戏的沉浸感和个性化体验。

与Player Controller关联:Player State通常与Player Controller(玩家控制器)关联,用于在玩家控制器之间传递游戏数据。当玩家在游戏中切换角色或场景时,Player State可以保持玩家的数据一致性。

总之,Player State是游戏中负责存储和管理玩家相关数据的关键类。通过自定义Player State,你可以为游戏添加各种跟踪和记录玩家信息的功能,提高游戏的可玩性和丰富度。

Game Mode

Game Mode(游戏模式)是Unreal Engine中用于定义和管理游戏规则、流程和逻辑的特殊类。它继承自AGameModeBase类,负责游戏的开始、结束、重置等关键事件。简单来说,Game Mode就像是游戏的裁判,确保游戏按照既定的规则和流程进行。

以下是Game Mode的一些主要功能:

游戏规则:Game Mode可以定义游戏的基本规则,如胜利条件、失败条件、时间限制等。通过在Game Mode类中实现相应的逻辑,你可以控制游戏的输赢判定。

角色生成(Spawning):Game Mode负责在游戏开始时生成玩家和AI角色。通过在Game Mode类中实现生成逻辑,你可以控制角色的出生地点、角色类型等信息。

控制器分配:Game Mode负责将玩家和AI控制器分配给游戏角色(如Pawn或Character)。这可以实现玩家在游戏中切换控制角色、AI角色的控制等功能。

游戏流程:Game Mode可以控制游戏的整体流程,如游戏开始、暂停、结束等关键事件。通过在Game Mode类中定义这些事件,并调用相应的函数,你可以实现游戏的流程控制和逻辑。

状态管理:Game Mode通常与GameState(游戏状态)类关联,用于管理游戏的全局状态。GameState类可以存储游戏的全局信息,如关卡数据、剩余时间等。通过在Game Mode类中更新GameState,你可以实现游戏的状态管理和同步。

总之,Game Mode是游戏中负责定义和管理规则、流程和逻辑的关键类。通过自定义Game Mode,你可以为游戏添加各种独特的规则和玩法,提高游戏的可玩性和多样性。

Game State

Game State(游戏状态)是Unreal Engine中用于存储和管理与游戏全局相关的数据和状态的类。它继承自AGameStateBase类,负责跟踪游戏的关卡信息、剩余时间、玩家列表等全局数据。简单来说,Game State就像是游戏的记分板,记录着游戏中的整体状态和信息。

以下是Game State的一些主要用途:

存储全局数据:Game State可以存储游戏的全局数据,如剩余时间、关卡信息、玩家列表等。通过在Game State类中定义变量并实现相应的逻辑,你可以轻松跟踪和更新这些数据。

游戏进度:Game State可以用于记录游戏的整体进度,如已完成的关卡、总分数等。通过检查和更新Game State中的数据,你可以实现游戏的进度管理和存档功能。

网络同步:在多人游戏中,Game State可以在客户端和服务器之间同步,确保所有玩家都能看到全局的游戏数据。这对于实现多人游戏的联机功能至关重要。

与Game Mode关联:Game State通常与Game Mode(游戏模式)关联,用于在游戏模式之间传递全局数据。当玩家在游戏中切换关卡或场景时,Game State可以保持游戏的数据一致性。

统计与排行榜:Game State可以用于实现游戏的统计和排行榜功能。通过在Game State类中收集和处理玩家的得分、成就等信息,你可以为游戏添加各种排行榜和统计功能。

总之,Game State是游戏中负责存储和管理全局相关数据的关键类。通过自定义Game State,你可以为游戏添加各种跟踪和记录全局信息的功能,提高游戏的可玩性和丰富度。

Brush

Brush(笔刷)是Unreal Engine中一个用于创建和编辑基本几何体的特殊对象。Brush对象主要用于构建关卡中的静态环境,如地形、建筑、墙壁等。在早期的Unreal Engine版本中,Brush对象是关卡设计的基础,通过组合多个Brush对象,可以创建出复杂的三维场景。

Brush对象有以下特点:

可编辑性:Brush对象具有强大的可编辑性,可以轻松地修改其形状、大小、位置等属性。这使得关卡设计师可以快速地构建和调整游戏场景。

几何操作:Unreal Engine提供了一系列对Brush对象进行几何操作的工具,如添加、减去、切割等。通过使用这些工具,可以将基本的Brush对象组合成复杂的三维模型。

材质和贴图:Brush对象支持自定义材质和贴图,可以为游戏场景添加丰富的视觉效果。通过为Brush对象分配不同的材质和贴图,可以实现各种风格的关卡设计。

碰撞检测:Brush对象可以自动生成碰撞体积,用于游戏中的物理模拟和角色交互。这使得关卡设计师无需额外创建碰撞体积,可以直接在游戏中使用Brush对象。

需要注意的是,随着Unreal Engine的发展,现代版本的Unreal Engine(如UE4和UE5)更注重使用静态网格(Static Mesh)来构建关卡。与Brush对象相比,静态网格具有更高的性能和更丰富的细节,已经成为关卡设计的主流方法。然而,Brush对象仍然可以用于快速原型设计和简单场景的构建。

Volumes

Volumes(体积)是Unreal Engine中的一种特殊对象,用于定义游戏世界中的空间区域。Volumes通常不可见,但可以与游戏中的角色、物体和事件进行交互。通过使用Volumes,关卡设计师可以轻松地为游戏场景添加各种触发器、效果和行为。

以下是一些常见的Volumes类型及其用途:

Trigger Volume:触发器体积用于检测玩家或物体进入或离开指定区域。当满足条件时,触发器体积可以触发游戏事件,如打开门、播放音效等。

Blocking Volume:阻挡体积用于创建不可穿透的障碍物,阻止玩家或物体进入指定区域。它们通常用于创建墙壁、栅栏或其他不可通过的障碍。

Physics Volume:物理体积用于改变指定区域内的物理属性,如重力、摩擦力等。通过使用物理体积,可以实现不同区域的物理效果,如水下、空中等。

Post Process Volume:后处理体积用于定义指定区域内的视觉效果,如光照、雾、颜色等。通过使用后处理体积,可以为游戏场景添加动态的视觉效果和环境氛围。

Audio Volume:音频体积用于定义指定区域内的音效和音乐。通过使用音频体积,可以实现不同区域的音效变化和背景音乐切换。

要使用Volumes,关卡设计师需要在Unreal Engine的关卡编辑器中创建对应的Volume对象,并设置其属性和行为。通过将Volume与游戏事件和逻辑关联,可以实现丰富的游戏互动和场景变化。总之,Volumes是Unreal Engine中强大的关卡设计工具,可以为游戏场景添加各种空间交互和动态效果。

Level

关卡(Level) 是你定义的gameplay区域。关卡包含玩家可以看到并与其交互的所有内容,例如几何体、Pawn和Actor。

虚幻引擎将每个关卡保存为单独的 .umap 文件,这也是为什么你在某些情况下会看到它们被称为 地图(Maps) 。

在Unreal Engine中,关卡(Level)是用于构建和组织游戏世界的基本单元。关卡包含了游戏场景中的各种对象,如角色、物体、光源、音效等。通过将这些对象组合在一起,关卡设计师可以为游戏创建丰富的环境和场景。

关卡设计在Unreal Engine中具有很大的灵活性,以下是一些关键概念:

场景对象:关卡中包含了各种场景对象,如静态网格、动态物体、角色等。通过为这些对象分配属性和行为,可以为游戏场景添加各种交互和动态效果。

地形和景观:关卡设计师可以使用Unreal Engine内置的地形编辑器创建和编辑地形,为游戏世界构建山脉、河流、森林等自然环境。此外,还可以使用景观工具创建更大规模的地形和地形细节。

灯光和阴影:关卡中可以包含各种光源,如平行光、点光、聚光等。通过调整光源的属性和设置阴影效果,可以为游戏场景创建真实和引人入胜的视觉效果。

导航和AI:关卡设计师可以使用Unreal Engine内置的导航系统为游戏中的角色创建可行走路径。此外,还可以通过AI系统为游戏角色添加自动寻路、巡逻等行为。

事件和逻辑:关卡中可以包含各种事件触发器和游戏逻辑,如按钮、开关、计时器等。通过将这些事件与游戏对象关联,可以为游戏场景添加丰富的互动和动态效果。

在Unreal Engine中,关卡可以通过关卡编辑器(Level Editor)进行创建和编辑。关卡编辑器提供了一整套工具和功能,帮助设计师轻松地搭建游戏世界。此外,关卡还可以通过蓝图(Blueprints)系统进行可视化编程,实现更复杂的游戏逻辑和行为。总之,关卡是Unreal Engine中用于构建和组织游戏世界的核心概念,关卡设计师可以利用各种工具和功能为游戏创建引人入胜的场景和体验。

World

世界(World) 是构成游戏的所有关卡的容器。它处理关卡的流送和动态Actor的生成(创建)。

在Unreal Engine中,World(世界)是一个更宏观的概念,它表示整个游戏世界的容器。World由一个或多个关卡(Levels)组成,这些关卡共同构建了游戏的整体环境和场景。World负责管理和维护游戏中的所有对象、资源和系统。

World具有以下几个主要特点:

多关卡组合:World可以包含多个关卡,这些关卡可以按照设计师的需求进行组合和切换。这使得游戏能够在不同的场景之间进行切换,提供更丰富的游戏体验。

全局管理:World负责管理游戏中的所有对象和资源,包括角色、物体、光源等。此外,World还负责处理全局事件和逻辑,如游戏进程、存档等。

游戏规则和设置:World中包含了游戏的全局规则和设置,如物理属性、摄像机设置等。这些设置可以在整个游戏中保持一致,或者根据关卡的需求进行调整。

关卡流(Level Streaming):World支持关卡流功能,允许在游戏运行时动态加载和卸载关卡。这可以帮助减小游戏的内存占用,提高性能。

游戏网络和多人游戏:World还负责处理游戏的网络通信和多人游戏功能。通过在World中配置网络设置,可以实现局域网或互联网上的多人游戏。

总之,在Unreal Engine中,World表示整个游戏世界,负责管理和维护游戏的所有内容。通过将多个关卡组合在一个World中,游戏开发者可以为玩家提供一个连贯、丰富的游戏体验。

你可能感兴趣的:(虚幻5笔记,ue5)