-
[Unreal] GarbageCollection.cpp 에러, Invalid object in GC 에러쾌락없는 책임 (공부)/Unreal 2022. 11. 5. 17:15반응형
Fatal error: [File:D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\GarbageCollection.cpp] [Line: 1112] Invalid object in GC: 0x000008555dffe8a0, ReferencingObject: ZombieBase /Script/ProjectFA.Default__ZombieBase, ReferencingObjectClass: Class /Script/ProjectFA.ZombieBase, Property Name: MovingState, Offset: 1960, TokenIndex: 77
개요
저 망할 오류가 계속해서 떠서 IDE에서 빌드를 해도 파일을 열 수 없는 상태가 있었습니다. 이를 해결한 과정을 올려 추후 비슷한 오류가 발생하는 분들에게 참고가 되었으면 합니다. 저는 시간 좀 걸렸는데 이거 보시는 분들은 금방 해결하셨음 하네요.
원인 분석 했지만 정확히는 모름..
일단 원인은 nullptr인 애들을 조작하려고 한 것입니다. 초기화가 제대로 되지 않아서 GC와 충돌이 있었던거 같습니다. 한번 원래 코드를 한번 보시죠.
void AZombieBase::BeginPlay() { Super::BeginPlay(); SetZombieState(MovingState); //... } void AZombieBase::SetZombieState(TObjectPtr<IIZombieState> State) { // 여기 State가 nullptr 일수도 있다는 느낌인듯 if(CurState) CurState->EndBehaviour(this); CurState = State; CurState->StartBehaviour(this); }
이 코드를 통해서 빌드를 하면 오류가 계속 생기기에 SetZombieState에서 아래와 같은 체크 과정을 하나 넣어줬습니다.
void AZombieBase::SetZombieState(TObjectPtr<IIZombieState> State) { if(State == nullptr) return;
이런 뒤 빌드가 잘 되었습니다.
그런데 한번 더 빌드가 안되길래 인터페이스 멤버 포인터들에게서 UPROPERT를 제거해 줬습니다.
TObjectPtr<class IIZombieState> CurState; TObjectPtr<IIZombieState> MovingState; TObjectPtr<IIZombieState> AttackingState;
반응형'쾌락없는 책임 (공부) > Unreal' 카테고리의 다른 글
[Unreal] 언리얼의 GC에 대해서 알아보자. 아주 간략히 (0) 2022.11.07 [Unreal] 언리얼 Anim Montage가 재생되지 않을 때 - Unreal Anim Montage not playing (0) 2022.11.05 [Unreal] 언리얼 TObjectPtr에서 UFUNCTION 사용 불가 (0) 2022.11.04 [Unreal] Unreal Engine 5 TObjectPtr (2) 2022.09.20 [Unreal] unreal callback by delegate - 언리얼 콜백 만들기 (1) 2022.08.21