什么是Actor
Actor是Unreal中最基本的一种类型,字面上的意思是演员,但是在Unreal中,不是会动的会表演的东西才叫做“演员”,在游戏场景中,一切物体皆是“演员”,也就是说,万物皆Actor,它是所有游戏场景中的所有物体的基础的类,是由AActor类派生而来的类的实例。所有可以拖入场景中的物体,都是又Actor继承而来的。
但是,一个门可以说是Actor,但是用于控制开门关门的锁芯一般不叫作Actor,一般视为Actor中的组件,也就是说,Actor一般是为一个整体物体或实体,而这个整体物体或实体里面的部件一般为Actor的组件。
以下为与Actor相关的函数
BeginPlay:Actor生成并初始化完成以后,首先调用的就是这个函数,并且只调用这一次,一般用于设置基本的逻辑,或更改一些属性。
Tick:Actor生成以后,在游戏场景中,每一帧都会调用一次Tick函数,直到这个Actor被销毁为止。
EndPlay:当这个Actor被销毁时,运行的函数。
GetComponentByClass:根据指定的类型来寻找这个Actor组件下所有这个类型的组件,注意,返回的是所有。
GetActorLocation:获得这个Actor的Location信息等。
SetActorLocation:显而易见,有Get就必然有Set,那么Set就是设置这个Actor的Location等信息属性了。
什么是组件
既然一辆车是Actor,而车轮和车门是Actor的组件,那么显而易见,组件一般作为Actor的子对象使用,简单来说就是添加在这个Actor上面的东西,它可以让这个Actor拥有特定的行为或者功能。例如,一辆车和一辆飞机的移动和控制的方式显然是不同的,那么这个都是为移动的不同的方式,那就可以由组件来完成。
注意,Actor是可以直接拖入场景中的,但是ActorComponent是不能直接拖入场景中的,ActorComponent是要依附于所对应的Actor才能出现在场景中,相对于这个Actor身上的一部分。
其中,ActorComponent是组件的基础类,常见的组件有:StaticMeshComponent,CharactrMovement,SphereComponent等等等等。
我们可以使用CreatDefaultSubobject方法来创建一个组件,代码如下(代码可以左滑查看全部):
Camera = CreatDefaultSubobject<UCameraComponent>(TEXT("Camera"));
其意思为,我们在程序里面有一个叫Camera的类,但是没有指定它的值,用CreatDefaultSubobject<UCameraComponent> 为它指定了一个刚刚创建的CameraComponent组件,他对应的C++类为UCameraComponent,这个时候我们要引用这个我们新创建的CameraComponent组件则直接引用Camera即可,而后面的TEXT("Camera")的意义为为这个组件在虚幻引擎编辑器的可视化窗口下这个Actor属性下的这个CameraComponent组件的名字,注意,这个"Camera"名字与程序里面引用的Camera这两个名字是截然不同的。如下图显示。

这个Actor下的MeshComponent啊,MovemenComponent啊,Grabber啊等等这些,所显示出来的这些名字,就是程序里面CreatDefaultSubobject<T>(TEXT("This Component name"))里面的这个TEXT后所指定的名字。其中,T代表所要创建的组件的对应C++类,一般是所创建的组件类型前面加一个U即为对应的C++类。