NPC 서브트리 인스턴스화
This commit is contained in:
parent
3eeed819b2
commit
45ae01777a
@ -46,11 +46,19 @@ private async Task InitializeAiInternal(CustomerDataEntry inCustomerDataEntry)
|
||||
subtree = await customerState.GetOrLoadSubtree(inCustomerDataEntry.CustomerType);
|
||||
}
|
||||
|
||||
_behaviorTree.Subgraph = subtree;
|
||||
// 에이전트 간 상태 공유를 방지하기 위해 서브트리 에셋을 런타임 인스턴스로 복제하여 사용합니다.
|
||||
// Addressables에서 로드한 원본 Subtree(ScriptableObject)를 그대로 공유하면 변수/태스크 상태가 섞일 수 있습니다.
|
||||
var subtreeInstance = subtree != null ? ScriptableObject.Instantiate(subtree) : null;
|
||||
if (subtreeInstance == null)
|
||||
{
|
||||
Debug.LogError("[CustomerAiComponent] Subtree instance is null. AI 초기화 중단.");
|
||||
return;
|
||||
}
|
||||
|
||||
_behaviorTree.Subgraph = subtreeInstance;
|
||||
// 블랙보드는 이 BehaviorTree 인스턴스에 바인딩되어야 에이전트별 스코프가 분리됩니다.
|
||||
_blackboardComponent.InitializeWithBehaviorTree(_behaviorTree);
|
||||
_blackboardComponent.SetCustomerData(inCustomerDataEntry.Id);
|
||||
// TODO : 1. Subtree - Action, Condition
|
||||
// TODO : 2. Blackboard
|
||||
_behaviorTree.StartBehavior();
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user