【UE4 虚幻引擎 学习笔记一】常见的基类(二) Actor、Pawn、Character、Controller

Actor

Actor在官方文档的里意思是:Actor类是游戏中一切实体Actor的基类。其实这更像是一句废话,Actor作为一个常用基类,要明白一个问题:

	什么时候该继承Actor类?

问:一个实体在场景中需要有位置坐标和旋转量,那一定需要继承Actor类吗?

	答案是不一定。

一个3D物体在坐标空间里一定是存在Transform的,但是作为一个Component,在UE中只是一个Scene Component 而Actor在UE中是只是一个可以挂载Component类而已。
所以,需要挂载组件的时候,你才应该继承自Actor类。很多时候,写一个Manager或者一个Data又或者只是解析一个Config,只需要写一个C++类就可以了。

Pawn

Pawn翻译成中文的意思就是小兵、小卒,不错,继承了这个类就意味着会成为游戏中的一个可以被操纵的棋子,它拥有着被“操作”特性,它能够被一个Controller操纵,这个Controller可以是玩家,也可以是AI。
我很喜欢大象无形里对它的描述:

*这就是Pawn类,一个被操纵的兵或卒,一个一旦脱离棋手就无法自主行动的、悲哀的肉体。

Character

Character类继承自Pawn类,那么它和Pawn类一样,被Controller操纵着。那么什么时候需要继承Character类什么时候继承Pawn类呢?
首先相比于Pawn类,Character类提供了一个Movement组件,这个组件提供了角色移动基本逻辑功能,包括角色的移动和跳跃,还可以依据需求扩展出不同的移动状态,比如爬行、蹲伏。
那么,当对象逻辑简单、不需要过多的逻辑动作(比如方块、飞船)那么可以选择继承Pawn而不是继承Character类。
当然,大部分人形角色都是适用于这个类的。

Controller

在大象无形中,以上组件都被称为UE的肉体,那么Controller便是他们的灵魂,一下引用自大象无形的几个段落,描述得很形象:

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。虽然这种比喻不是非常恰当,但是能方便理解。

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

  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值