Unreal通用基类

  1. Actor

    • Actor 是可以放到关卡中的任何对象,例如摄像机、静态网格体或玩家出生点位置

    • Actor 支持 3D 变换,例如转换、旋转和缩放

    • Actor 在 UE 中是只是一个可以挂载 Component的类而已。所以,需要挂载组件的时候,才应该继承自 Actor 类。很多时候,写一个 Manager 或者一个 Data 又或者只是解析一个Config,只需要写一个 C++ 类就可以了

    • 可以通过 gameplay 代码(C++ 或蓝图)创建(生成)销毁 Actor,在蓝图中使用 从类生成Actor 节点,生成后就自动添加到场景中并能在场景中看到

      unreal从类生成Actor

      unreal销毁Actor

  2. Pawn

    PawnActor 的子类,作为游戏内的形象或人像(例如游戏中的角色)。玩家或游戏的 AI 可以控制 Pawn,将其作为非玩家角色(NPC),可以理解为在游戏中的肉体

  3. Character

    • 角色(Character) 是计划用作玩家角色的 Pawn Actor 的子类。角色子类包括碰撞设置、双足运动的输入绑定以及用于玩家控制动作的其他代码
    • 相比于 Pawn 类,Character 类提供了一个Movement 组件,这个组件提供了角色移动基本逻辑功能,包括角色的移动和跳跃,还可以依据需求扩展出不同的移动状态,比如爬行、蹲伏
    • 当对象逻辑简单、不需要过多的逻辑动作(比如方块、飞船)那么可以选择继承 Pawn 而不是继承 Character
  4. Controller

    玩家控制器(Player Controller) 获取玩家输入,并将其转换到游戏内的互动中。每个游戏内部都至少具有一个玩家控制器。玩家控制器通常操控一个 Pawn 或角色作为玩家在游戏中的呈现方式。

    以下引用自大象无形的描述:

    Controller 是漂浮在 Pawn/Character 之上的灵魂。它操纵着 PawnCharacter 的行为。Controller可以是 AI,AIController 类,你可以在这个类中使用虚幻引擎优秀的行为树/EQS 环境查询系统。同样也可以是玩家,Player Controller 类。你可以在这个类中绑定输入,然后转化为对 Pawn 的指令。我希望阐述的是,为何虚幻引擎采用这样的设计。Epic 给出的理由非常简单:“不同的怪物也许会共享同样的 Controller,从而获得类似的行为”。其实,Controller 抽象掉了“怪物行为”,也就是扮演了有神论者眼中“灵魂”的角色。既然是灵魂,那么肉体就不唯一,因此灵魂可以通过 Possess/UnPossess 来控制一个肉体,或者从一个肉体上离开。肉体拥有的只是简单的前进、转向、跳跃、开火等函数。而 Controller 则是能调用这些函数。从某种意义上来说,MVC 中的 Controller 与虚幻引擎这套系统有着某种类似。虚幻引擎的 Controller 对应着 MVCControllerPawn 就是 Model,而 Pawn挂载的动态网格组件(骨架网格或者静态网格),对应着 MVCView。虽然这种比喻不是非常恰当,但是能方便理解。

    ————大象无形:虚幻引擎程序设计浅析

  5. Game Model Base

    • 游戏模式(Game Mode) 设置要运行的游戏的规则
    • 针对不同的关卡重载游戏模式。无论你选择以何种方式实施,每个关卡都只能有一个游戏模式
  6. GameInstance

    这是一个全局的单例,这个单例会在游戏项目开始运行时创建,直到游戏结束时销毁,记录游戏中的状态值。

  7. Actor Compoment、Scene Compoment 组件

    • 场景中看到的所有对象皆是 Actor,而 Actor 复杂的功能是由许多不同的 Component 共同实现的
    • UActorComponent 提供最一般的功能
    • USceneComponent 提供三维的空间变换以及嵌套功能
    • UPrimitiveComponent 提供了可视化的功能

参考:

  1. 虚幻引擎术语
  2. UE4中Actor、Pawn、Character等各种类的详细了解
  3. 常见的基类(二) Actor、Pawn、Character、Controller