虛幻引擎基础知识学习笔记——Actor

虚幻引擎——万物皆为Actor

什么是Actor?

actor 指在舞台剧、电影、电视剧或广播剧中负责演出的角色

在UE中,3D世界是由Actor构建起来的,Acotor作为基本的组成要素,又拥有各式各样的Compeonent(元件),操纵Actor的工作教友各种controller来完成。在UE4中另外一个重要的概念就是BlueprinterestingClass(蓝图类)

综合起来,面对一个基础的Actor,可以添加一个蓝图,或者也可以选择添加一个Component,之后使用它来直接组织逻辑

在引擎中,为了模拟更加复杂的情景,需要使用到父子嵌套关系来呈现结构,从本质上来说,物理模拟,以及游戏逻辑等等诸多功能,都不过是为了实现对这些对象的操控

UE4是扎根于UObject来实现的,并且将命名更换为UClass。这个基础为UE4带来了非常多的便利,例如元数据,反射生成,序列化,编辑器可见,Class Default,以及GC垃圾回收等

Actor是独立于这个根基凭空产生的吗,并不是,Actor并不能摆脱UObjec的影响(实际上,UObject的影响是方方面面,全面且深远的)。基于UObject,Actor不同的部分在于Replication(网络复制)以及Spawn,Tick

Actor生命周期:SpawnActor,DestoryActor

一,生成GameInstance

UEditorEngine::CreateInnerProcessPIEGameInstance(FRequestPlaySessionParams & InParams, const FGameInstancePIEParameters & InPIEParameters, int InPIEInstanceIndex)

由此便生成了熟悉的GameInstance

二,生成GameMode

GetGameInstance()->CreateGameModeForURL

每一个在worldSetting中对umap设置的GameMode都是这样生成

(其实GameMode也是被Spawn出来的一个Actor

Actor调用BeginPlay流程:场景开始对所有Actor初始化,首先判断是否已经初始化过了,会多次调用方法if(!AreActorInitialized())会多次。如果没有经历过初始化,则会调用代码

调用流程:1,UWorld::BeginPlay()

2,AGameStateBase::HandleBeginPlay()

3,AWorldSettings::NotifyBeginPlay()所有Actor在此初始化

4,DispatchBeginPlay(bool bFromLevelStreaming)

5,BeginPlay()真正意义上的ActorBeginPlay

初始化组件位置:

类的构造函数之后,在BeginPlay之前(BeginPlay在放入关卡生成实例时进行)

如果在构造函数之后在代码中自定义组件,会因为错过组件初始化,导致组件无法注册因而创建失败——>根据组件的位置是否在构造函数当中,分为两种情况

一,在构造函数中,相应接口为CreateDefaultSubobject

二,在非构造函数中,即运行时创建组件,关键在于组件注册,因为组件在实例化之前就已经完成,因此为了确保能够创建组件,需要借助接口RegisterComponent,创建接口对象可以通过NewObject接口

AActor为什么重要?直观的显示在界面上,就是世界大纲列表中的所有物体,基本上都是AActor

未完待续,粗稿待后续补充修改

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值