-
Actor
-
Actor
是可以放到关卡中的任何对象,例如摄像机、静态网格体或玩家出生点位置 -
Actor
支持 3D 变换,例如转换、旋转和缩放 -
Actor
在 UE 中是只是一个可以挂载 Component的类而已。所以,需要挂载组件的时候,才应该继承自Actor
类。很多时候,写一个Manager
或者一个Data
又或者只是解析一个Config
,只需要写一个 C++ 类就可以了 -
可以通过
gameplay
代码(C++
或蓝图)创建(生成)或销毁 Actor,在蓝图中使用从类生成Actor
节点,生成后就自动添加到场景中并能在场景中看到
-
-
Pawn
Pawn
是Actor
的子类,作为游戏内的形象或人像(例如游戏中的角色)。玩家或游戏的 AI 可以控制 Pawn,将其作为非玩家角色(NPC),可以理解为在游戏中的肉体。 -
Character
- 角色(Character) 是计划用作玩家角色的
Pawn Actor
的子类。角色子类包括碰撞设置、双足运动的输入绑定以及用于玩家控制动作的其他代码 - 相比于
Pawn
类,Character
类提供了一个Movement 组件
,这个组件提供了角色移动基本逻辑功能,包括角色的移动和跳跃,还可以依据需求扩展出不同的移动状态,比如爬行、蹲伏 - 当对象逻辑简单、不需要过多的逻辑动作(比如方块、飞船)那么可以选择继承
Pawn
而不是继承Character
类
- 角色(Character) 是计划用作玩家角色的
-
Controller
玩家控制器(Player Controller) 获取玩家输入,并将其转换到游戏内的互动中。每个游戏内部都至少具有一个玩家控制器。玩家控制器通常操控一个 Pawn 或角色作为玩家在游戏中的呈现方式。
以下引用自大象无形的描述:
Controller
是漂浮在Pawn/Character
之上的灵魂。它操纵着Pawn
和Character
的行为。Controller
可以是AI,AIController
类,你可以在这个类中使用虚幻引擎优秀的行为树/EQS 环境查询系统。同样也可以是玩家,Player Controller
类。你可以在这个类中绑定输入,然后转化为对Pawn
的指令。我希望阐述的是,为何虚幻引擎采用这样的设计。Epic 给出的理由非常简单:“不同的怪物也许会共享同样的Controller
,从而获得类似的行为”。其实,Controller
抽象掉了“怪物行为”,也就是扮演了有神论者眼中“灵魂”的角色。既然是灵魂,那么肉体就不唯一,因此灵魂可以通过Possess/UnPossess
来控制一个肉体,或者从一个肉体上离开。肉体拥有的只是简单的前进、转向、跳跃、开火等函数。而Controller
则是能调用这些函数。从某种意义上来说,MVC
中的Controller
与虚幻引擎这套系统有着某种类似。虚幻引擎的Controller
对应着MVC
的Controller
,Pawn
就是Model
,而 Pawn挂载的动态网格组件(骨架网格或者静态网格),对应着MVC
的View
。虽然这种比喻不是非常恰当,但是能方便理解。————大象无形:虚幻引擎程序设计浅析
-
Game Model Base
- 游戏模式(Game Mode) 设置要运行的游戏的规则
- 针对不同的关卡重载游戏模式。无论你选择以何种方式实施,每个关卡都只能有一个游戏模式
-
GameInstance
这是一个全局的单例,这个单例会在游戏项目开始运行时创建,直到游戏结束时销毁,记录游戏中的状态值。
-
Actor Compoment、Scene Compoment 组件
- 场景中看到的所有对象皆是
Actor
,而Actor
复杂的功能是由许多不同的Component
共同实现的 UActorComponent
提供最一般的功能USceneComponent
提供三维的空间变换以及嵌套功能UPrimitiveComponent
提供了可视化的功能
- 场景中看到的所有对象皆是
参考: