UE4_蓝图异步节点_异步加载图片

.h
#pragma once

#include "CoreMinimal.h"
#include "Kismet/BlueprintAsyncActionBase.h"
#include "AsyncImportFileAsTexture2D.generated.h"

DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnImportImage, UTexture2D*, InTargetImage);

/**
 *  异步加载图片
 */
UCLASS()
class EDUMG_API UAsyncImportFileAsTexture2D : public UBlueprintAsyncActionBase
{
    GENERATED_BODY()
    
public:

    UFUNCTION(BlueprintCallable, meta = (BlueprintInternalUseOnly = "true", Category = "Tool|AsyncImportFileAsTexture2D", WorldContext = "WorldContextObject"))
    static UAsyncImportFileAsTexture2D* AsyncImportFileAsTexture2D(UObject* WorldContextObject, const FString& InTargetFilePath);

    /** Delegate called when the save/load completes */
    UPROPERTY(BlueprintAssignable)
    FOnImportImage Completed;

    /** Execute the actual operation */
    virtual void Activate() override;

protected:
    // 目标文件路径
    FString TargetFilePath;
};

.cpp

#include "FunctionLibrary/AsyncImportFileAsTexture2D.h"
#include "ImageUtils.h"


UAsyncImportFileAsTexture2D* UAsyncImportFileAsTexture2D::AsyncImportFileAsTexture2D(UObject* WorldContextObject, const FString& InTargetFilePath)
{
    UAsyncImportFileAsTexture2D* Action = NewObject<UAsyncImportFileAsTexture2D>();

    Action->TargetFilePath = InTargetFilePath;
    Action->RegisterWithGameInstance(WorldContextObject);

    return Action;
}

void UAsyncImportFileAsTexture2D::Activate()
{
    AsyncTask(ENamedThreads::GameThread, [&]()
    {
        UTexture2D* Image = FImageUtils::ImportFileAsTexture2D(TargetFilePath);

        if (this->Completed.IsBound())
        {
            this->Completed.Broadcast(Image);
        }

        SetReadyToDestroy();
    });
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值