Game Develop

[UE5] NotifyState에서 GetWorld()는 nullptr만 반환한다. 본문

UnrealEngine5/이것저것

[UE5] NotifyState에서 GetWorld()는 nullptr만 반환한다.

MaxLevel 2024. 7. 31. 09:35

내가 설계한 구조상, 노티파이스테이트에서 매개변수로입력한 공격이름에 대한 정보를 DataManager라는 서브시스템에서 가져오게 해놨다.

 

그래서 으레 다른곳에서 했던것처럼 


UDataManager* dataManager = GetWorld()->GetGameInstance()->GetSubsystem<UDataManager>();

 

이런식으로 가져왔는데, 크래쉬가 발생했다. 

확인결과 GetWorld()자체가 그냥 nullptr을 반환했다. 

그래서 그냥 느낌상으론, NotifyState는 액터나 액터에 부착되는 액터컴포넌트같은것들처럼 월드에 속한개념이 아니다보니(?) 그냥 nullptr을 리턴하는 것 같다.

 

좀 더 정확히는, 그냥 노티파이트스테이트에서 GetWorld()를 하면 UObject의 GetWorld를 가져오고, MeshComp의 GetWorld는 해당 컴포넌트를 소유한 액터의 GetWorld를 호출하게되고, 해당 액터는 자신이 속한 레벨의 월드를 결국 가져오게되니 확실하게 가져올 수 있다.

그래서 그냥 MeshComp의 GetWorld를 이용하면 된다.

 

이후 구글링을 해보니, 같은사례를 겪은 외국인 및 한국인이 여럿 있었다.