zoukankan      html  css  js  c++  java
  • UE4笔记-异步蓝图节点 (UBlueprintAsyncActionBase)

    记录备查:

    基于的UBlueprintAsyncActionBase类可实现异步蓝图节点

    -------------------------------------------------------------------------------

    例子:

    .h

    UCLASS()
    class MYPROJECT_API UBPAsyncNode_Custom : public UBlueprintAsyncActionBase
    {
        GENERATED_BODY()
    public:
        DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FBPPin_Result, const TArray<FString>&, Datas);
        /** 输出针脚1 */
        UPROPERTY(BlueprintAssignable)
            FBPPin_Result OnSuccess;
    
        /** 输出针脚2 */
        UPROPERTY(BlueprintAssignable)
            FBPPin_Result OnFailure;
    public:
        /** 蓝图节点:负责NewOBject 蓝图节点(创建工厂模式) */
        UFUNCTION(BlueprintCallable, meta = (BlueprintInternalUseOnly = "true", WorldContext = "WorldContextObject", Category = "Biz API"))
            static UBPAsyncNode_Custom* CustomAsyncBPNode(UObject* WorldContextObject);
    protected:
        // UBlueprintAsyncActionBase interface
    
    
        /** 程序通过(运行)节点是调用 */
        virtual void Activate() override;
    
        //~UBlueprintAsyncActionBase interface
    
    };

    .cpp

    UBPAsyncNode_Custom* UBPAsyncNode_Custom::CustomAsyncBPNode(UObject* WorldContextObject)
    {
        UBPAsyncNode_Custom* Ins = NewObject<UBPAsyncNode_Custom>();
        return Ins;
    }
    
    void UBPAsyncNode_Custom::Activate()
    {
        //测试逻辑----开新线程,延迟一秒后随机调用成功或失败委托
        Async(EAsyncExecution::ThreadPool, [&]()
            {
                FPlatformProcess::Sleep(1.0f);
                int32 result = FMath::RandRange(1,100);
    
                TArray<FString> arr;
                if (result > 50)
                {
                    this->OnSuccess.Broadcast(arr);
                }
                else 
                {
                    this->OnFailure.Broadcast(arr);
                }
            });
    }

    使用:

    Note:

    容器类类结果必须是

    const  YourClass & 

    如例子的TArray容器

     DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FBPPin_Result, const TArray<FString>&, Datas);

    否则报错

    Signature Error: XXXX  does not match the necessary signature 

  • 相关阅读:
    centos7.6 安装与配置 MongoDB yum方式
    MongoDB 介绍
    centos 关闭selinux
    前端 HTML标签属性
    前端 HTML 标签嵌套规则
    前端 HTML 标签分类
    前端 HTML body标签相关内容 常用标签 表单标签 form里面的 input标签介绍
    前端 HTML body标签相关内容 常用标签 表单标签 form 表单控件分类
    前端 HTML form表单标签 select标签 option 下拉框
    POJ 1426
  • 原文地址:https://www.cnblogs.com/linqing/p/13405210.html
Copyright © 2011-2022 走看看