UEC++消亡Actor通知

1、Destroyed函数

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

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

参数说明

  bNetForce 是否强制网络同步删除

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

Destroyed();

在Actor中的定义

void AActor::Destroyed()
{
    RouteEndPlay(EEndPlayReason::Destroyed);

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

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

SetLifeSpan函数

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

 

设置延时删除(单位秒)

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

2、EndPlay函数

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

virtual void EndPlay(const EEndPlayReason::Type EndPlayReason);
EEndPlayReason类型 既删除类型
UENUM(BlueprintType)
namespace EEndPlayReason
{
    enum Type
    {
        /** 当actor或是component彻底被删除时(内存中) */
        Destroyed,
        /** 关卡切换时删除回调(非关卡流) */
        LevelTransition,
        /** 编辑器关闭时,回调通知 */
        EndPlayInEditor,
        /** 关卡流切换被释放时调用 */
        RemovedFromWorld,
        /** 游戏退出时被删除回调 */
        Quit,
    };
}

 

posted @ 2022-09-17 18:41  黎沐不吃香菜  阅读(317)  评论(0编辑  收藏  举报