본문 바로가기

유니티

[Behavior Designer] 03 . Behavior Tree Component

[Behavior Tree Component]

[Behavior Tree Component]

해당 컴포넌트는 Behavior를 저장하고 , Behavior Designer와 Task 간의 인터페이스 역할을 수행한다.

해당 API로 BT를 시작하고 멈출 수 있다.

public void EnableBehavior();
// pause:  temporarily stop the behavior tree at its current execution point. 
//It can be resumed with EnableBehavior.
public void DisableBehavior(bool pause = false);

해당 메서드는 Task를 찾을 수 있다.

TaskType FindTask<TaskType>();
List<TaskType> FindTasks<TaskType>();
Task FindTaskWithName(string taskName);
List<Task> FindTasksWithName(string taskName);

해당 메서드는 BT의 현재 실행 상태를 알려준다.

behaviorTree.ExecutionStatus

 트리가 실행중이라면 Running 상태가 반환 / 트리가 완료되면 작업 결과에 따라 성공/실패가 된다.

해당 메서드로 이벤트의 구독도 가능하다

OnBehaviorStart
OnBehaviorRestart
OnBehaviorEnd

[컴포넌트 구성 요소]

Behavior Name

비헤이비어 트리의 이름입니다.

Behavior Description

비헤이비어 트리가 수행하는 작업을 설명합니다.

External Behavior

이 동작 트리가 시작될 때 실행되어야 하는 외부 동작 트리를 지정하는 필드입니다.

Group

행동 트리의 숫자 그룹. 동작 트리를 쉽게 찾는 데 사용할 수 있습니다. CTF 샘플 프로젝트는 이에 대한 예를 보여줍니다.

Start When Enabled

true인 경우 컴포넌트가 활성화되면 동작 트리가 실행되기 시작합니다.

Asynchronous Load

동작 트리가 별도의 스레드에서 로드되어야 하는지 여부를 지정합니다. Unity는 작업자 스레드에서 수행되는 API 호출을 허용하지 않기 때문에 공유 변수 에 대한 속성 매핑을 사용하는 경우 이 옵션을 비활성화해야 합니다 .

Pause When Disabled

true인 경우 구성 요소가 비활성화되면 비헤이비어 트리가 일시 중지됩니다. 거짓이면 비헤이비어 트리가 종료됩니다.

Restart When Complete

true인 경우 비헤이비어 트리는 실행이 완료되면 처음부터 다시 시작합니다. 거짓이면 비헤이비어 트리가 종료됩니다.

Reset Values On Restart

true인 경우 variables task public variables 는 트리가 다시 시작될 때 원래 값으로 재설정됩니다.

Log Task Changes

디버깅에 사용됩니다. 활성화하면 작업 상태가 변경될 때마다 동작 트리가 출력됩니다(예: 시작 또는 중지).

 

[스크립트로 BT 만들기]

=>External Behavior를 저장 , 새로 생성된 BT에 해당 트리를 로드 가능하다.

using UnityEngine;
using BehaviorDesigner.Runtime;

public class CreateTree : MonoBehaviour
{
	public ExternalBehaviorTree behaviorTree;

	private void Start()
	{
		var bt = gameObject.AddComponent<BehaviorTree>();
		bt.StartWhenEnabled = false;
		bt.ExternalBehavior = behaviorTree;
	}
}

해당 트리는 bt.EnableBehavior().를 호출하는 순간 동작 할 것이다.

 

출처