国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

UE4/5c++基于BlueprintAsyncActionBase和FTickableGameObject的異步節(jié)點(diǎn)【多流程的創(chuàng)建、異步執(zhí)行】

這篇具有很好參考價(jià)值的文章主要介紹了UE4/5c++基于BlueprintAsyncActionBase和FTickableGameObject的異步節(jié)點(diǎn)【多流程的創(chuàng)建、異步執(zhí)行】。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

目錄

簡單的多流程制作

取消除流程外,原本的藍(lán)圖執(zhí)行線【如果要進(jìn)行異步執(zhí)行可以不取消看效果】

結(jié)果

代碼:

繼承FTickableGameObject,時(shí)刻判斷是否結(jié)束,來執(zhí)行不同引腳

結(jié)果:

代碼:


在之前筆者講解了通過枚舉的方式去制作“因?yàn)槟吃驁?zhí)行不同情況的執(zhí)行線” 的節(jié)點(diǎn),以及多個引腳的輸入和輸出的相關(guān)文章:

UE4/5c++如何創(chuàng)建有多個輸出執(zhí)行的函數(shù)(不同情況不同執(zhí)行線)_ue4 同時(shí)執(zhí)行_多方通行8的博客-CSDN博客

UE4/5c++如何創(chuàng)建有多個輸出變量(引腳)的函數(shù)_c++函數(shù)輸出多個變量_多方通行8的博客-CSDN博客

簡單的多流程制作

首先筆者將講解不同流程是如何制作的:

首先是繼承于BlueprintAsyncActionBase類,做一個多播,如果不理解什么是多播可以看:

UE4/5C++:Delegate(委托or代理?)的使用_c++代理和委托_多方通行8的博客-CSDN博客

之后我們做一個函數(shù),這個函數(shù)的作用是輸入值,并修改內(nèi)部的值,為的是更好的為我們使用virtual void Activate() override;

取消除流程外,原本的藍(lán)圖執(zhí)行線【如果要進(jìn)行異步執(zhí)行可以不取消看效果】

在UCLASS寫上:UCLASS(meta = (HideThen = true))

結(jié)果

這里隨便創(chuàng)建一個actor類:

寫完后,我們會獲得兩種函數(shù),上面的就是通過?virtual void Activate() override;的多流程函數(shù),雖然上面加入了時(shí)間,但你如果沒有寫,實(shí)際上是不會發(fā)生等待之類的。

UE4/5c++基于BlueprintAsyncActionBase和FTickableGameObject的異步節(jié)點(diǎn)【多流程的創(chuàng)建、異步執(zhí)行】,# ue4/5藍(lán)圖混合c++,ue4

代碼:

頭文件


#pragma once

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


DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FMyBAADelegate, int, Ret);


/**
 * 
 */
UCLASS(meta = (HideThen = true))
class METAHUMANTEST_API UMyBAA : public UBlueprintAsyncActionBase
{
	GENERATED_BODY()
public:

	UPROPERTY(BlueprintAssignable)
		FMyBAADelegate yes;
	UPROPERTY(BlueprintAssignable)
		FMyBAADelegate no;
	//暴露給藍(lán)圖
	UFUNCTION(BlueprintCallable, Category = "DelayAction")
	static UMyBAA* JudeNum(int waitTime);
protected:
	// 繼承自父類的虛函數(shù)
	virtual void Activate() override;

private:
	UPROPERTY(EditAnywhere)
		float DelayTime;
};

cpp文件:

#include "MyBAA.h"

UMyBAA* UMyBAA::JudeNum(int waitTime)
{
	// 創(chuàng)建UMyBAA對象
	UMyBAA* DelayAction = NewObject<UMyBAA>();
	DelayAction->DelayTime = waitTime;
	//返回
	return DelayAction;
}

void UMyBAA::Activate()
{
	if (DelayTime <5)
	{
		DelayTime++;
		yes.Broadcast(DelayTime);
	}
	else
	{
		no.Broadcast(DelayTime);
	}
}

繼承FTickableGameObject,時(shí)刻判斷是否結(jié)束,來執(zhí)行不同引腳

在原來的基礎(chǔ)上,我們再基礎(chǔ)一個FTickableGameObject類【這里可以把原來的Activate的邏輯可以去除掉了,雖然只執(zhí)行一次,但是可能會和tick中的邏輯發(fā)生沖突,需要自己去進(jìn)行判斷

其實(shí)就是多寫幾行代碼,值得注意的是tick的接口和頭文件的加入,這個函數(shù)可以時(shí)時(shí)刻刻通過tick來判斷數(shù)值是否【這里我將UCLASS中的meta = (HideThen = true)去掉了

結(jié)果:

UE4/5c++基于BlueprintAsyncActionBase和FTickableGameObject的異步節(jié)點(diǎn)【多流程的創(chuàng)建、異步執(zhí)行】,# ue4/5藍(lán)圖混合c++,ue4

UE4/5c++基于BlueprintAsyncActionBase和FTickableGameObject的異步節(jié)點(diǎn)【多流程的創(chuàng)建、異步執(zhí)行】,# ue4/5藍(lán)圖混合c++,ue4

代碼:

頭文件

// Fill out your copyright notice in the Description page of Project Settings.

#pragma once

#include "CoreMinimal.h"
#include "Kismet/BlueprintAsyncActionBase.h"
#include "Tickable.h"

#include "MyBAA.generated.h"


DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FMyBAADelegate, int, Ret);


/**
 * 
 */
UCLASS(/*meta = (HideThen = true)*/)
class METAHUMANTEST_API UMyBAA : public UBlueprintAsyncActionBase,public FTickableGameObject
{
	GENERATED_BODY()
public:

	UPROPERTY(BlueprintAssignable)
		FMyBAADelegate yes;
	UPROPERTY(BlueprintAssignable)
		FMyBAADelegate no;


	UFUNCTION(BlueprintCallable, Category = "DelayAction")
	static UMyBAA* JudeNum(int waitTime);
protected:
	// 繼承自父類的虛函數(shù)
	virtual void Activate() override;
	// tick接口
	virtual void Tick(float DeltaTime);
	virtual TStatId GetStatId() const;
private:
	UPROPERTY(EditAnywhere)
		float DelayTime;
};

cpp文件:文章來源地址http://www.zghlxwxcb.cn/news/detail-573483.html

// Fill out your copyright notice in the Description page of Project Settings.


#include "MyBAA.h"

UMyBAA* UMyBAA::JudeNum(int waitTime)
{
	// 創(chuàng)建UMyBAA對象
	UMyBAA* DelayAction = NewObject<UMyBAA>();
	DelayAction->DelayTime = waitTime;
	//返回
	return DelayAction;
}

void UMyBAA::Activate()
{
	//if (DelayTime <5)
	//{
	//	DelayTime++;
	//	yes.Broadcast(DelayTime);
	//}
	//else
	//{
	//	no.Broadcast(DelayTime);
	//}
}

void UMyBAA::Tick(float DeltaTime)
{
	if (DelayTime > 0)
	{
		DelayTime--;
		yes.Broadcast(DelayTime);
		if (DelayTime == 0)
		{
			no.Broadcast(DelayTime);
			RemoveFromRoot();
		}
	}
}

TStatId UMyBAA::GetStatId() const
{
	return TStatId();
}


到了這里,關(guān)于UE4/5c++基于BlueprintAsyncActionBase和FTickableGameObject的異步節(jié)點(diǎn)【多流程的創(chuàng)建、異步執(zhí)行】的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包