Featured image of post Pawn(虚幻引擎)

Pawn(虚幻引擎)

UE5 Pawn basics: class hierarchy, Pawn vs Character, common functions, and the Get Owner vs Get Owning Actor gotcha.

Pawn(虚幻引擎)

核心定义

Pawn = 可被控制器操控、能在场景里物理存在的游戏实体基类

凡是可以被玩家/AI控制、占据空间、拥有碰撞、能移动的物体,都继承自 APawn

类继承层级

1
2
3
4
5
UObject(虚幻所有对象根类)
└── AActor(场景中所有摆放物体统称)
    └── APawn
        ├── ACharacter(最常用:玩家角色、人形NPC)
        └── 自定义Pawn(载具、飞船、炮台、无人机等非人形体)

Pawn vs Character

类型 适用场景 自带组件
APawn 飞船、汽车、坦克、炮台、弹球等非人形 基础移动组件,没有人形骨骼、胶囊碰撞、动画蓝图
ACharacter 人形玩家角色、人形NPC 胶囊碰撞体、骨骼网格体、CharacterMovement(走路、跳跃、下蹲、爬坡)、动画实例

Character 是专门给人形角色定制的 Pawn;非人形可操控物体直接用 Pawn。

常用功能

  • GetController():获取当前操控它的控制器
  • Possess():控制器抢占操控这个Pawn
  • UnPossess():放弃操控
  • SetActorLocation() / AddMovementInput:移动自身
  • 可绑定摄像机,作为第一/第三人称载体

实战踩坑:Get Owner vs Get Owning Actor

场景:蓝图中获取某个 Actor 的"拥有者"时,两个函数名都有"Owner",容易混淆。

函数 返回的是 说明
Try Get Pawn Owner Pawn(或 None) 只有当 Owner 是 Pawn 类型时才有值。若父类是 Actor 而非 Pawn,返回 None
Get Owning Actor Actor 返回该组件所属的 Actor。需要再调用 Get Owner 才能拿到真正的拥有者

实际链路

1
2
3
Get Owning Actor → 返回 BP_VIRTUS(父类 Actor)
    ↓ 再调用 Get Owner
Get Owner → 返回 BP_FPSPlayer(真正的玩家角色)

蓝图节点链路:Get Owning Actor 返回 BP_VIRTUS,再 Get Owner 返回 BP_FPSPlayer

关键理解:两个函数都带"Owner"字样,但含义不同:

  • Get Owning Actor = “这个组件属于哪个 Actor”(向上找组件归属)
  • Get Owner = “这个 Actor 的拥有者是谁”(Actor 之间的 Owner 关系)
本作品采用知识共享署名-非商业性使用-相同方式共享4.0国际许可协议进行许可(CC BY-NC-SA 4.0)
文章浏览量:Loading
Powered By MC ZBD Studio
发表了64篇文章 · 总计115.79k字
载入天数...载入时分秒...
总浏览量Loading | 访客总数Loading

主题 StackJimmy 设计
由ZephyrBD修改