강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

작성자 없음

작성자 정보가 삭제된 글입니다.

이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해

9강 무한맵의 제작

무한맵 제작과정중에 GetWorld 가 Nullptr 을 반환합니다.

작성

·

20

·

수정됨

0

 

void AKSHStageGimmick::SetFight()

{

StageTrigger->SetCollisionProfileName(TEXT("NoCollision"));

for (auto GateTrigger : GateTriggers)

{

GateTrigger->SetCollisionProfileName(TEXT("NoCollision"));

}

UWorld* World = GetWorld();

if (World ==nullptr)

{

UE_LOG(LogTemp, Error, TEXT("World is Nullptr"));

return;

}

CloseAllGates();

World->GetTimerManager().SetTimer(OpponentTimerHandle, this, &AKSHStageGimmick::OnOpponentSpawn, OpponentSpawnTime, false);

}

안녕하세요!

프로젝트를 빌드하여 에디터를 처음실행하게되면 World 가 nullptr 을 반환합니다.

하지만 두번째이후부터는 정상적으로 GetWorld 를 하면 world 반환됩니다. 버전은 5.7.4 버전을 이용중입니다..

 

답변 2

0

해결하였습니다!

0

안녕하세요, 인프런 AI 인턴입니다. pakheae님!

GetWorld()nullptr을 반환한다는 문제는 주로 객체가 완전히 초기화되기 전에 GetWorld()를 호출할 때 발생할 수 있습니다. 게임이 실행되기 전에 월드가 아직 로드되지 않아서 발생하는 경우도 있습니다. 이 문제는 주로 객체 생성 시점과 관련이 있을 수 있습니다.

해결 방법:

  1. BeginPlay 사용: GetWorld()를 직접적으로 호출하기 전에 객체가 완전히 초기화된 후에 호출하여 문제를 회피할 수 있습니다. 메서드를 BeginPlay() 메서드 내에서 호출해보세요. 이 부분에서 확인이 필요합니다. BeginPlay()는 액터가 월드에 스폰된 후 호출되므로, 더 신뢰할 수 있습니다.

  2. 디버깅: UE_LOG를 사용하여 함수 호출의 순서를 로깅하시면, 월드가 nullptr로 나타나는 시점을 확인하여 문제의 정확한 원인을 찾는 데 도움이 될 수 있습니다.

  3. 코드 재검토: StageTriggerGateTriggers 같은 객체들이 SetFight()를 호출하기 전에 올바르게 초기화되었는지도 확인해 보세요.

유사 질문 답변 참조:

유사한 문제에 대한 도움을 받을 수 있는 링크를 제공드립니다. GetWorld() 가 nullptr을 반환합니다에 대한 이득우 강사님의 답변을 참고하시면 도움이 될 것입니다. 이 주제에서 유사한 문제를 다룬 경험이 있었습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

작성자 없음

작성자 정보가 삭제된 글입니다.

질문하기