(40)UE 里从 C++到蓝图的异步节点函数,继承类 UBlueprintAsyncActionBase

(65)


bash 复制代码
蓝图调用静态函数(如 MyAsyncAction::DoSomething())
        │
        ▼
  NewObject 创建 UObject 实例
        │
        ▼
  Activate() 被调用 ← 你在这里写异步逻辑(开线程/AsyncTask/Tick等)
        │
        ▼
  完成后 Broadcast 委托
        │
        ▼
  蓝图中 Exec 引脚触发,继续往下走

规范写法(必须这么写才能被识别)

cpp 复制代码
// .h
UCLASS()
class UMyAsyncAction : public UBlueprintAsyncActionBase
{
    GENERATED_BODY()

public:
    // ① 静态工厂函数------必须 static + BlueprintCallable
    UFUNCTION(BlueprintCallable, meta = (BlueprintInternalUseOnly = "true"))
    static UMyAsyncAction* DoSomething(UObject* WorldContextObject, float Delay);

    // ② 委托------必须 BlueprintAssignable,蓝图中会变成 Exec 引脚
    UPROPERTY(BlueprintAssignable)
    FMyDelegate OnCompleted;

    // ③ 重写 Activate------异步逻辑入口
    virtual void Activate() override;

private:
    float InternalDelay;
};

++ 以及

cpp 复制代码
// .cpp
UMyAsyncAction* UMyAsyncAction::DoSomething(UObject* WorldContextObject, float Delay)
{
    UMyAsyncAction* Node = NewObject<UMyAsyncAction>();
    Node->InternalDelay = Delay;
    Node->RegisterWithGameInstance(); // 防止被 GC 回收
    return Node;
}

void UMyAsyncAction::Activate()
{
    // 异步执行,不阻塞蓝图
    AsyncTask(ENamedThreads::AnyBackgroundThreadNormalTask, [this]()
    {
        FPlatformProcess::Sleep(InternalDelay);

        // 回到游戏线程广播结果
        AsyncTask(ENamedThreads::GameThread, [this]()
        {
            OnCompleted.Broadcast();
            SetReadyToDestroy(); // 标记可回收
        });
    });
}

++ 蓝图中长什么样

bash 复制代码
[Exec In] ──→ [DoSomething] ──→ [Then] (Exec 输出)
                  │
                  └──→ [Completed] (委托事件,可绑定)

(66)

谢谢

相关推荐
四代水门6 天前
UE5实现客户端与服务器时间同步
ue5
智海深蓝7 天前
海上平行战场:态势模拟三维可视化平台
3d·ue5
_守一8 天前
UE5 ListView记录
ue5
成都渲染101云渲染66669 天前
CR15新功能介绍以及CR15云渲染流程
ue5·图形渲染·blender·maya·corona
一锅炖出任易仙10 天前
创梦汤锅学习日记day30
学习·ai·ue5·游戏引擎
OSwich10 天前
【UE5学习笔记】UMG中控件命名规范
笔记·学习·ue5
一锅炖出任易仙11 天前
创梦汤锅学习日记day29
学习·ai·ue5·游戏引擎
吴梓穆11 天前
UE5 C++ 注册 开始重叠和结束重叠事件
开发语言·c++·ue5
妙为11 天前
unreal engine5(UE5)中使用Rider
ue5·游戏引擎·虚幻·rider
归真仙人13 天前
【UE】LineTraceByProfile
ue5·游戏引擎·ue4·unreal engine