Wiki
778 words
4 minutes
Pawn 概述
Pawn 概述
【重点】Pawn 是 Actor 的一个子类,代表游戏世界中的一个可被控制的代理(Agent)。它充当玩家或人工智能(AI)在游戏环境中的化身或实体。Pawn 可以被 控制器(Controller) 所”拥有(Possess)“和控制。
核心特性
- 继承自 Actor: 【重点】Pawn 继承了 Actor 的所有基本功能,包括拥有 Transform、组件、生命周期事件等。
- 可被控制 (Controllable): 【重点】Pawn 设计的核心在于它可以被
Controller(PlayerController或AIController)控制。这种控制器-Pawn分离的设计是 Unreal 架构的关键之一,它允许:- 同一个 Pawn 可以被玩家或 AI 控制。
- 玩家或 AI 可以在不同的 Pawn 之间切换控制权(例如,从控制角色切换到控制载具)。
- 【技巧】在 Pawn 死亡或销毁时,控制器可以保持存在,并可能控制一个新的 Pawn。
- 接收输入: Pawn 可以被设置为接收玩家的输入。
- 移动: 【技巧】Pawn 通常需要移动能力。虽然 Pawn 基类本身不直接提供复杂的移动逻辑,但通常会配合
MovementComponent(尤其是CharacterMovementComponent或FloatingPawnMovement)来实现移动。 - AI: AI 控制的实体通常使用 Pawn 作为其在世界中的表现形式,由
AIController驱动。
与其他概念的关系
- Actor: 【重点】Pawn 是 Actor 的子类。所有 Pawn 都是 Actor,但并非所有 Actor 都是 Pawn。
- Controller: 【重点】
Controller是负责”思考”和发出指令的实体,而Pawn是执行这些指令的”身体”。Controller通过Possess()函数拥有 Pawn,通过UnPossess()函数解除拥有。- Character: 【技巧】
Character是 Pawn 的一个常用子类,它预设了用于人形角色的功能,包括CharacterMovementComponent(提供行走、跳跃、游泳、飞行等复杂移动模式)和CapsuleComponent(用于碰撞)以及SkeletalMeshComponent(用于显示骨骼动画)。对于大多数玩家角色和人形 AI,通常会选择 Character 作为基类。
- Character: 【技巧】
应用场景【例子】
- 玩家控制的角色
- AI 控制的敌人或 NPC
- 可驾驶的载具
- 任何需要被玩家或 AI 直接控制的游戏内实体
工程师思维框架
- 问题定义: 如何在游戏中创建一个可以被玩家或 AI 控制的实体,并将其控制逻辑与实体本身分离?
- 原理分析: 使用继承自
Actor的Pawn类作为受控实体,并引入Controller类负责控制逻辑。 - 解决方案: 创建
Pawn或其子类(如Character)的蓝图或 C++ 类。创建对应的PlayerController或AIController。在游戏逻辑中,让 ControllerPossess合适的 Pawn。 - 优化迭代:
- 【注意】根据实体需求选择合适的移动组件,避免使用过于复杂的组件(例如,简单的漂浮物不需要
CharacterMovementComponent)。 - 【技巧】利用 Controller 和 Pawn 的分离,可以方便地实现如灵魂出窍、远程控制、AI接管玩家角色等功能。
- 【注意】根据实体需求选择合适的移动组件,避免使用过于复杂的组件(例如,简单的漂浮物不需要
- 经验总结: Pawn 是连接控制逻辑 (Controller) 和世界表现 (Actor) 的桥梁,理解 Pawn-Controller 架构对于开发可交互角色至关重要。