안선생의 개발 블로그
[UE5 AI] Behavior Tree - Decorator 본문
설계 개념에서 decorator는 원래 어떤 기능을 하던 모듈은 고치지 않고 그대로 둔 채로 그 모듈을 감싸서 어떤 기능을 추가하는 것을 말합니다. 언리얼 엔진에서의 decorator도 같은 개념인데, Decorator는 Behavior Tree에서 각 task에 붙어서 task가 할 일을 더 추가해 주는 일을 합니다. 그리고 decorator가 task에 붙지만 composite에도 붙습니다. 언리얼 엔진에서 decorator는 주로 이 노드(task나 compositr)가 실행될지 말지를 체크하는 역할을 합니다. 그래서 한 노드에 서비스, 태스크, 데코레이터가 모두 들어가 있다면 데코레이터, 서비스, 태스크 순으로 실행됩니다. 데코레이터에서 거절하면 그 노드는 아예 실행이 안 됨 만약 compositie에 붙어 있는 데코레이터에서 거절하면 그 하위 서브 트리들도 모두 실행이 안됩니다.
IF문이랑 비슷
생성방법
보통 블랙보드를 많이 쓰니 블랙보드 선택
if문이랑 같음
블랙보드 추가된 모습 파란게 블랙보드
오른쪽 디테일 패널창 보면
관찰자 노티파이 :
On Result Change : 가져온 조건 결과가 바뀔 때 Ex) 노드가 다시 시작될 떄 다시 확인
On Value Change : 관찰되는 블랙보드 값이 바뀔 때 재시작, Ex) 바뀔때마다 다시 확인
관잘차 중단
None : 아무일도 일어나지 않음 : 분기는 넘어가지만 하위 트리들은 실행됨
Self
: 실행중인 자기 자식 하위 노드 전부 중지
Lower Priority
오른쪽 하위 노드들 모두 중지
Both
모든 노드 중지
블랙보드
키 쿼리
Is Set : 참인가
IS Not Set : 거짓
참이면 실행, 거짓이면 다음 노드 실행
블랙보드값에 따라 키 쿼리가 바뀜
스트링이면
쿼리가 저렇게 바뀜
다른 예시
TimeLimit 데코레이터
Task에 주로 붙임 만약 Move To가 5초 이상동안 실행되면 거짓이 되므로 다른 노드 실행
즉 데코레이터는 if문이라고 보면된다. 조건이 맞으면 실행하고 아니면 다른노드를 실행한다 보면 된다.
'언리얼 > AI' 카테고리의 다른 글
[UE5 AI] EQS( Environment Query System) (0) | 2025.02.17 |
---|---|
[UE5 AI] Behavior Tree - Service (0) | 2024.03.21 |
[UE5 AI] Simple Parallel (0) | 2024.03.21 |
[UE5 AI] AI - BlackBoard (0) | 2024.03.20 |
[UE5 AI] AI Behavior Tree - Task, 셀렉터(Selector),시퀀스(Sequence) (0) | 2024.03.17 |