返回 导航

UE5

hangge.com

UE5 - 蓝图中常见的基础类详解(Object、Actor、Pawn、Character)

作者:hangge | 2025-07-16 08:50
    本文将详细介绍一下 UE5 中最常见的几个基础类,它们分别是:ObjectActorPawnCharacter。这四个类存在着继承关系, 其中:
  • Object 表示“物体”,是 UE5 中大多数类的基类; 
  • Actor 表示“演员”,是所有可以被摆放到场景中物品的基类,继承于 Object 类;
  • Pawn 表示“棋子”,是所有有形物体的基类,继承于 Actor; 
  • Character 表示“角色”,是所有游戏中人形角色的基类,继承于 Pawn。 

1,Object

(1)Object(物体)”是 UE5 中的根基类。UE 中的很多类都继承于 Object,它提供了很多一个 UE5 物体应该有的基础功能,包括但不限于以下几点:
  • GCGarbage Collection),垃圾回收机制。在游戏开发中,我们常常会管理成千上万的对象和对应的资源,如果在原生 C++ 开发中,一旦不使用这些资源了,那么需要我们手动找出全部不用资源,把它们销毁。如果我们忘记将这些资源销毁,就会造成内存占用越来越大,最终会影响游戏的性能。所以虚幻引擎引入了 GC 机制,这个机制可以自动找出游戏中已经不被使用到的资源,并且在合适的时间帮我们销毁。Object 类中,就有大量与 GC 相关的逻辑。 
  • 序列化Serialization)的作用是将游戏中的某些状态保存称为一个文件。比如说在单机游戏中,我们常需要将存档保存成为本地的一个文件;再比如说在网络游戏中,我们得将角色的状态定时上传到服务器,为此,需要把对象的状态收集起来成为一个文件,或者一个数据块,这也是序列化的一种。 
  • 反射Reflection)指的是每个类都能够知道自己包含了什么属性和功能,并且能够使用这些属性和功能的名字在游戏运行过程中动态地获取和使用它们。 

(2)最重要的是,Object 作为一个最根本的基类,能够让 UE5 的其他类都能有一个共同继承的祖先,这样才能方便地管理这些对象。 

2,Actor 类与组件模式

(1)Actor 可以翻译为演员,它直接继承于 ObjectActor 表示的是一个能够被放置在场景中的物体(这个物体也许是可见的,但也有可能是不可见的)。比如:
  • 游戏场景中的柱子就是一个 Actor(的子类)对象,它是可见的;
  • 而游戏中的某某管理器也可以是 Actor,可以被摆放在场景中,但它不需要外观,是不可见的。 

(2)重要的 Actor 子类有很多。如有形的比如下文中要提到的 Pawn,而无形的比如 LevelScriptActor,用于设置场景的基础逻辑,又比如 AGameMode,用来设置游戏模式。 

(3)跟 Actor 密切相关的类是 ActorComponent,它直接继承于 ObjectComponent 表示“组件”,ActorComponent 的意思就是 Actor 的组件。这里涉及一个编程常用设计模式,叫作组件模式。 
  • 组件可以用来丰富类的行为,比如我们创建了一个叫作“”的类。如果我们想让“”有穿衣服的能力,那么就可以新建一个组件叫作“穿着组件”,并附着到“”上,这样一来“”借助这个组件就有了穿衣的能力。 
  • 组件模式还有一个好处叫作“解耦合”,也就是减弱耦合。 我们可以随时让“”拥有或失去穿着服装的能力。 如果设计得当,那么衣服组件不但能让“”穿上衣服,而且即使我们想将角色从人改成宠物--比如一只可爱的猫,那么只要我们把衣服组件附着到猫身上,猫立刻就能拥有穿衣服的能力。

3,Pawn

(1)继承于 Actor 的有一个重要类叫作 Pawn。与 Actor 不同的是,Pawn 一般是特指“有外观的生物”。这个生物我们默认它是被 AI 智能控制的,比如场上的怪物,或者接下来我们要讲的 Pawn 的子类 Character(角色)。 

(2)Pawn 可以被一个 AlControllerAI 控制器)控制,继而拥有 AI 相关的能力。

4,Character 

(1)Character 继承于 Pawn,这个类代表的是“两腿走到的人形角色”(所以理论上你的猫角色不能用这个类)。基于 Character 类的蓝图将继承以下特定于角色的组件:
  • 胶囊体组件CollisionCylinder):用于进行碰撞测试。 
  • 箭头组件Arrow):表示角色的当前方向。
  • 网格体CharacterMesho):这个组件是一个骨骼网络,可以直观地表示角色。网格组件的动画由动画蓝图控制。 
  • 角色移动CharacterMovement):该组件用于定义各种类型的角色运动,如行走、跑步、跳跃、游泳和飞行等。 

(2)Character 一般可以被两种形式操控:
  • 第一种形式是通过 InputController(输入控制器)等方式,接收玩家的键盘和鼠标输入来行动;
  • 第二种形式是通过 AIController 控制,使用行为树等方法决定行动;

(3)其中,InputControleAIController 都继承于 Controller,而 Controller 一般按制一个 Pawn 的逻辑。 

附:其他游戏框架类

(1)下面是虚幻引擎中一些通用类的层次结构:

(2)通过分析这个层次结构,我们可以看到 Actor Component Scene Component 类都不是 Actor。这些类用于创建可以填加到 Actor 的组件。例如:
  • Actor Component 组件常见的示例是“静态网格体组件
  • Scene Component 组件常见的示例是“旋转运动组件
评论

全部评论(0)

回到顶部