반응형
[Unreal/C++] UseBlackboard TObjectPtr<> 문제
Unreal Engine5에서 나타나는 문제점이다.
먼저 UE4 에서는 Blackboard Component가 UBlackboardComponent* 자료형으로 선언되어 있다.
하지만 UE5에서는 TObjectPtr<UBlackboardComponent>로 선언되어 있는데,
UseBlackboard 함수를 사용할 때에는 UBlackboardComponent*& 형식으로 받기 때문에 전달할 수 없는 문제가 생긴다.
AAIController::UseBlackboard(UBlackboardData* BlackboardAsset, UBlackboardComponent*& BlackboardComponent)
UE4 강의 자료로 학습하고 UE5로 공부하고 있는 사람들이 많이 겪는 문제이다.
먼저 TObjectPtr은 언리얼 5에서 기존의 원시 포인터를 대체하기 위한 UObject용 포인터 이다. 언리얼이 32비트를 더 이상 지원하지 않게 되면서 생긴 64비트 포인터 시스템으로 일단 원시 포인터와 동일한 역할을 한다고 하는데 대부분의 원시 포인터가 TObjectPtr로 바뀌면서 학습하는 사람들에게는 따라야 할 약속이 생긴 것이다.
어쨋거나 이 문제의 해결책은 UBlackboardComponent* 형식으로 변환해 주는 것이다.
UBlackboardComponent* blackboardComp = Blackboard;
UseBlackboard(OwnerEnemy->GetBehaviorTree()->BlackboardAsset, blackboardComp);
Blackboard를 다시 Component*로 생성해주거나 형변환을 통해 가능할 수도 있다. (시도해보지는 않았다.)
UseBlackboard(OwnerEnemy->GetBehaviorTree()->BlackboardAsset, (UBlackboardComponent*)blackboardComp);
OnPossess(APawn* InPawn) 함수 내에서 사용하게 되는데 이보다 더 좋은 방법이 있다면 공유해줬으면 좋겠다.
반응형
'Unreal > Solution' 카테고리의 다른 글
Unreal 몽타주 슬롯 변경시 애니메이션 재생 (0) | 2023.12.21 |
---|---|
Unreal IGameplayTaskOwnerInterface Link Error (0) | 2023.12.20 |
Unreal C++ 생성자 사용시 주의할 점 (0) | 2023.12.16 |
Unreal C++ 블루프린트 부모 클래스 변경 (0) | 2023.12.12 |
Unreal Layered Blend per bone 본 별 레이어 블렌딩 이상함 (0) | 2023.12.04 |