(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)

谢谢

相关推荐
落魄大学生之流水线上谋生计2 天前
BLACK TIDE · 黑潮
ue5
曼巴UE510 天前
UE5 客户端 需要的网络同步概念总结(3 )-事件同步 RPC 以及三种调用方式
网络·c++·网络协议·学习·rpc·ue5
归真仙人13 天前
【UE项目迁移银河麒麟(Linux)局域网会话搜索失败排查】
ue5·ue4·vr·unreal engine·银河麒麟
fanfan_hongyun14 天前
UE5.1 应用InWebSocketClient-main 接收websocket信息
ue5
远离UE415 天前
Chaos、WFC 与 FJA 原理与区别笔记
ue5
平行云15 天前
3D应用推流太贵太慢?ImmerShare Lite:利用本地算力实现极简一键分享
unity·ue5·实时云渲染·云桌面·像素流·云游戏·串流
fanfan_hongyun16 天前
UE5.1 VaRest插件 读取json http请求
ue5
SpiderCodeJ16 天前
【UE5】- UE MCP :在UE5.8编辑器中内置链接Codex
ue5·codex·智能体·mcp
weixin_4046793120 天前
ue5 widget 之间的蓝图通讯
ue5
zr想努力20 天前
GAS学习(UE5自用)
学习·ue5