.h:
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "Kismet/BlueprintFunctionLibrary.h"
#include "MyBlueprintFunctionLibrary.generated.h"
/**
*
*/
USTRUCT(BlueprintType)
struct FTest {
GENERATED_BODY()
UPROPERTY(EditAnywhere, Category = "Analytics")
int32 value1;
UPROPERTY(EditAnywhere, Category = "Analytics")
int32 value2;
};
UENUM(BlueprintType)
enum class EMyEnum : uint8 {
value1,
value2
};
UCLASS()
class FLOATINGCUBE_API UMyBlueprintFunctionLibrary : public UBlueprintFunctionLibrary
{
GENERATED_BODY()
UFUNCTION(BlueprintCallable, Category = "Analytics")
static FTest DoSwap(const int32 &value1, const int32 &value2, int32& valueout1, int32& valueout2);//&为函数输出,const &为输入常量
UFUNCTION(BlueprintCallable, Category = "Analytics")
static bool AnotherDoSwap(int32 value1, int32 value2);
};
.cpp:
// Fill out your copyright notice in the Description page of Project Settings.
#include "MyBlueprintFunctionLibrary.h"
FTest UMyBlueprintFunctionLibrary::DoSwap(const int32 &value1, const int32 &value2, int32& valueout1, int32& valueout2) {
valueout1 = value2;
valueout2 = value1;
FTest ftest;
ftest.value1 = valueout1;
ftest.value2 = valueout2;
return ftest;
}
bool UMyBlueprintFunctionLibrary::AnotherDoSwap(int32 value1, int32 value2) {
value1 ^= value2;
value2 ^= value1;
value1 ^= value2;
return true;
}
实现结果:
Do Swap中value1、2中为代码中的const int32 &value1、2,int& valueout1为Do Swap的输出右边。return为返回值结构体。