inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해

11강 행동트리 모델의 이해

BBAsset 과 UseBlackboard(BBAsset, BlackBoardPtr) 를 작성한 이유가 궁금합니다.

89

Bori

작성한 질문수 2

0

BBAsset 은 BTAsset 을 통해서 가져올 수 있는데, BBAsset 을 변수로 선언하신 이유가 궁금합니다.

 

또한

 

RunAI 함수에서 UseBlackboard 를 사용하셨는데, RunBehaviorTree 함수 내부에서 동일한 기능을 수행하고 있습니다.

RunBehaviorTree 를 사용하기에 앞서 UseBlackboard 를 사용하신 이유가 궁금합니다.

 

 

 

unreal-engine ue-blueprint 언리얼-c++

답변 2

1

이득우

안녕하세요.
학습을 위해서 두 개가 필요함을 설명하기 위해서 선언한 것도 있는데, 가장 큰 것은 블랙보드의 값 초기화를 한 후 실행함을 명시적으로 지정하기 위해 미리 설정했다고 이해해주시면 될 것 같아요.

1

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. Bori님.

질문해 주신 내용에 대해 기존 Q&A 포럼에서 유사한 답변을 찾을 수 있었습니다. 언리얼 엔진에서 Behavior Tree와 Blackboard를 사용하는 원리에 대해 궁금하신 것 같습니다. 아래는 관련 게시물입니다.

유사한 질문과 답변 링크

  1. 언리얼 엔진의 Behavior Tree와 블랙보드 사용 원리

    • 이 질문에서는 블랙보드와 Behavior Tree가 어떻게 연관되고, 각각의 역할이 무엇인지에 대해 설명합니다.
  2. Behavior Tree와 사용 방법

    • Behavior Tree 내에서의 다양한 함수 호출에 대한 설명과, 블랙보드의 역할에 대해 더 자세히 알아볼 수 있습니다.

설명

블랙보드(Blackboard)는 주로 AI의 상태를 관리하기 위해 사용되며, 이는 Behavior Tree와 연관됩니다. 블랙보드를 명시적으로 설정하는 방법은 여러 가지가 있으며, 사용 맥락에 따라 적절히 선택하는 것이 중요합니다.

  • BBAsset를 변수로 선언하는 이유는 재사용성을 증가시키기 위함입니다. 직접 BTAsset에서 가져올 수 있지만, 명시적 선언을 통해 코드를 읽기도 이해하기도 더 쉽게 만들고, 별도로 관리함으로써 예기치 못한 오류를 방지할 수 있습니다.

  • UseBlackboard(BBAsset, BlackBoardPtr)을 명시적으로 호출하는 것은, 블랙보드가 꼭 필요한 시점에 미리 준비되도록 하고, 이후의 행동(Behavior)들이 의존하는 상태가 일관되게 유지되도록 하기 위함입니다.

기본적으로 RunAI 함수에서 명시적으로 사용하지 않아도 될 경우가 있지만, 코드를 좀 더 명시적으로 표현하고, 에러를 사전에 방지하기 위해 사용된 것으로 보입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

5.1 버전용 샘플을 찾을 수 없습니다.

0

12

1

무한맵 제작과정중에 GetWorld 가 Nullptr 을 반환합니다.

0

52

2

12강 행동트리에서 질문이 있습니다.

0

54

1

위젯 사이즈랑 위치 질문드려요.

0

84

3

행동트리의 데코레이션 관련하여 질문이 있습니다.

0

94

3

VS 2026 의 문제일까요?

0

510

2

에셋참조 블루프린트질문

0

70

2

애님 몽타주 콤보 관련질문

0

70

2

ThirdPerson CDO 에러가 생깁니다.

0

103

3

캐릭터가 움직이지 않습니다.

0

195

4

쿠킹 폴더 지정시 , Item 이외에는 지정하지 않는지 궁금합니다.

0

65

2

TSoftObjectPtr 를 사용했음에도, 메모리에 로드 됩니다.

0

101

2

7강에 나오는 생성자에 대해서 궁금합니다.

0

79

2

6강을 마무리하며 트레이스 채널 을 이해하지 못했습니다.

0

78

2

3강을 마무리 하며, 카메라가 움직이지 않습니다.

0

76

2

Use Controller Rotation 옵션값이 궁금합니다.

0

91

2

3강 입력 시스템 적용 중, 5.6 버전은 입력 매팅이 2개 입니다.

0

69

2

PlayerController 에 대헤 제가 잘못 이해한 것 같습니다.

0

82

2

13강 UpdateStat 부분에서 문제를 겪고 있습니다.

0

66

2

BP_PlayerController의 CustomEvent노드 이유가 궁금합니다.

0

69

1

콤포넌트 포인터 선언시 TObjectPtr<>과 UStaticMeshComponent* 차이점

0

76

2

CharacterMovementComponent의 RotationRate관련해서 질문이 있습니다.

0

118

2

언리얼 공부방법에 대해 질문드립니다.

0

90

2

4강 에서 이상한 그림자가 남습니다.

0

49

1