CPP 에서 제작한 Enum을 가져오려고 여러가지 수를 다 써봤는데
맨처음 생각한 방식은
Enum을 따로 저장을 해두고
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "Perception/AISense.h"
#include "Perception/AIPerceptionTypes.h"
#include "Engine/UserDefinedEnum.h"
#include "DataOfEnemies.generated.h"
UENUM(BlueprintType)
enum class EM_AISense : uint8
{
None UMETA(DisplayName = "None"),
Sight UMETA(DisplayName = "Sight"),
Hearing UMETA(DisplayName = "Hearing"),
Damage UMETA(DisplayName = "Damage")
};
UENUM(BlueprintType)
enum class EM_AIState : uint8
{
Passive UMETA(DisplayName = "Passive"),
Attacking UMETA(DisplayName = " Attacking"),
Frozen UMETA(DisplayName = "Frozen"),
Investigating UMETA(DisplayName = "Investigating"),
Dead UMETA(DisplayName = "Dead"),
Seeking UMETA(DisplayName = "Seeking")
};
UENUM(BlueprintType)
enum class EM_MovementSpeed : uint8
{
Idle UMETA(DisplayName = "Idle"),
Walk UMETA(DisplayName = "Walk"),
Jogging UMETA(DisplayName = "Jogging"),
Sprinting UMETA(DisplayName = "Sprinting")
};
USTRUCT(Atomic, BlueprintType)
struct FRangeofState
{
GENERATED_USTRUCT_BODY()
public:
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "IdealRange")
float AttackRadius;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "IdealRange")
float DefendRadius;
};
USTRUCT(Atomic, BlueprintType)
struct FCheckSensedStimulus
{
GENERATED_USTRUCT_BODY()
public:
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Stimulus")
FAIStimulus Stimulus;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Sensed")
bool Sensed;
};
(Sturct)도 여기에 일단 다 몰아넣어보았다.
그리고 난 뒤, UBlackboardKeyType_Enum 을 이용해서 Enum값을 새로운 키값으로 만들고 난뒤
#pragma once
#include "CoreMinimal.h"
#include "BehaviorTree/Blackboard/BlackboardKeyType_Enum.h"
#include "DataOfEnemies.h"
#include "AddKeyType.generated.h"
/**
*
*/
UCLASS()
class UAddKeyType : public UBlackboardKeyType_Enum
{
GENERATED_BODY()
public:
// Constructor for each enum type
UAddKeyType()
{
EnumType= StaticEnum<EM_AIState>();
}
};
이렇게 집어넣어봤는데 문제점이 하나 생겼었다.

바로 비교군을 나타내는 Key Value 창이 뜨지 않는다는것. 한참을 고민하다 결국 방법을 알아내었는데

바로 EnumName 에다가 내가 만든Enum을
검색을 하면 자동으로 Valid 한지 아닌지 언리얼 에디터가 알아서 검색을 해주는것이었다...

정상적으로 Key Value가 뜨는 모습이다.
'Unreal Engine 5' 카테고리의 다른 글
| 언리얼에서 Bind<BindUFunction VS AddDynamic> (0) | 2025.01.29 |
|---|---|
| 언제 TOptional 과 TMap 을 사용해야할까? (0) | 2025.01.28 |
| Unreal Interface CPP (0) | 2025.01.14 |
| 언리얼 튜토리얼 2 <캐릭터 만들기> (0) | 2024.12.25 |
| 졸업작품 다시 건드리기 (3) | 2024.10.31 |
