1、Destroyed函数

调用自身Destroy函数进行强制消亡操作

当对象被删除时(非内存删除)进行回调操作

参数说明

bNetForce 是否强制网络同步删除

bShouldModifyLevel 主要是用来控制先删除actor再修改关卡,还是先修改关卡再删除actor,默认是true,即为先修改关卡,再删除actor(修改关卡即为把actor先移除出场景)

1
Destroyed();

在Actor中的定义

1
2
3
4
5
6
7
void AActor::Destroyed()
{
RouteEndPlay(EEndPlayReason::Destroyed);

ReceiveDestroyed();
OnDestroyed.Broadcast(this);
}

Actor被标记为等待销毁并从关卡的Actor阵列中移除。

1
2
// 两秒后销毁
SetLifeSpan(2);

设置延时删除(单位秒)

注:这里的 Destroy 和 SetLifeSpan 函数直接调用都是销毁自身

2、EndPlay函数

对象被彻底清除时回调,回调会进行删除类型通知

1
virtual void EndPlay(const EEndPlayReason::Type EndPlayReason);

EEndPlayReason类型 既删除类型

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
UENUM(BlueprintType)
namespace EEndPlayReason
{
enum Type
{
/** 当actor或是component彻底被删除时(内存中) */
Destroyed,
/** 关卡切换时删除回调(非关卡流) */
LevelTransition,
/** 编辑器关闭时,回调通知 */
EndPlayInEditor,
/** 关卡流切换被释放时调用 */
RemovedFromWorld,
/** 游戏退出时被删除回调 */
Quit,
};
}