참고 문서
책 '이득우의 언리얼 C++ 게임 개발의 정석' Chapter 12
Blackboard에 키 추가하기 (무엇을 기억할건지.)
키 이름으로 접근할 수 있도록 Controller에 변수 추가하기
이렇게 만들면, 다른 코드에서 참조하기 편하다.
#pragma once
#include "ArenaBattle.h"
#include "AIController.h"
#include "ABAIController.generated.h"
UCLASS()
class ARENABATTLE_API AABAIController : public AAIController
{
GENERATED_BODY()
public:
AABAIController();
virtual void OnPossess(APawn* InPawn) override;
/* ----- 추가했음 */
// 책에는 변수명이 위처럼 작성되어있는데, 아래처럼 작성하는 것이 내 코드 스타일인 것 같다.
//static const FName HomePosKey;
//static const FName PatrolPosKey;
static const FName Key_HomePos;
static const FName Key_PatrolPos;
/* ----- */
private:
UPROPERTY()
class UBehaviorTree* BTAsset;
UPROPERTY()
class UBlackboardData* BBAsset;
};
#include "ABAIController.h"
#include "BehaviorTree/BehaviorTree.h"
#include "BehaviorTree/BlackboardData.h"
/* ----- 추가했음 */
const FName AABAIController::Key_HomePos(TEXT("HomePos"));
const FName AABAIController::Key_PatrolPos(TEXT("PatrolPos"));
/* ----- */
AABAIController::AABAIController()
{
static ConstructorHelpers::FObjectFinder<UBlackboardData> BBObject(TEXT("BlackboardData'/Game/Book/AI/BB_ABCharacter.BB_ABCharacter'"));
if (BBObject.Succeeded())
{
BBAsset = BBObject.Object;
}
static ConstructorHelpers::FObjectFinder<UBehaviorTree> BTObject(TEXT("BehaviorTree'/Game/Book/AI/BT_ABCharacter.BT_ABCharacter'"));
if (BTObject.Succeeded())
{
BTAsset = BTObject.Object;
}
}
void AABAIController::OnPossess(APawn* InPawn)
{
Super::OnPossess(InPawn);
if (UseBlackboard(BBAsset, Blackboard))
{
RunBehaviorTree(BTAsset);
}
}
이후에 Behavior Tree 노드에서 Key 값을 사용할 때, 이렇게 사용하면 된다.
#include "ABAIController.h"
OwnerComp->GetBlackboardComponent()->GetValueAsVector(AABAIController::Key_HomePos);
'Unreal' 카테고리의 다른 글
[Unreal C++] Behavior Tree 4 (서비스 사용하기) (0) | 2021.05.11 |
---|---|
[Unreal C++] Behavior Tree 3 (태스크 사용하기) (0) | 2021.05.11 |
[Unreal C++] Behavior Tree 1 (비헤이비어 트리 실행하기) (5) | 2021.05.11 |
[Unreal Error] UWidgetComponent::GetUserWidgetObject()가 Null 값을 반환하는 경우 (5) | 2021.05.11 |
[Unreal C++] 액터 컴포넌트 만들기 (0) | 2021.05.10 |