UE4 GetPlayerCharacter가 안될 때

sanghoon·2022년 12월 5일
0
post-thumbnail

오류 상황

개발을 하던 도중 UGameplayStatics::GetPlayerCharacter() 함수가 nullptr을 반환하는 상황이 발생하였다.

실패했던 해법들

  • GetPlayerCharacter() 대신 GetAllActorsOfClass()를 사용하라
    GetPlayerCharacter 함수가 가끔 빈값을 반환하는 경우가 있다 카더라. GetAllActorsOfClass 함수를 사용하여 TArray<원하는 클래스*>형 변수에 값을 담은 후, 0번째 인덱스에 있는 값을 얻어오면 된다.
  • GetAllActorsOfClass도 안될 때(비어있는 array를 넘길 때)
    이 설명은 해당 함수 사용법을 제대로 모르기에 발생했던 오류였다.
    https://stackoverflow.com/questions/39406118/why-getallactorsofclass-returns-empty
    요약하자면 두번재 파라미터의 인자로 찾으려는 클래스의 런타임 오브젝트를 넣어줘야 한다는 설명이다.

해법

단순히 액터 생명주기를 제대로 확인하지 않아서 생긴 문제였다.
따흑...

나의 경우 플레이어 캐릭터를 미리 레벨에 배치하지 않고, 게임을 플레이함과 동시에 레벨에 스폰되는 방식으로 구현하였다. 그 때문에 플레이어가 스폰되지 않은 상태에서(OnPossess, PostInitializeComponents에서 얻어오려고 했었다) 얻어오려고 하니 빈 값을 반환할 수밖에 없었던 것이다.

따라서 해당 코드를 BeginPlay()에 넣으면 제대로 동작하는 것을 확인할 수 있었다.

https://docs.unrealengine.com/4.27/ko/ProgrammingAndScripting/ProgrammingWithCPP/UnrealArchitecture/Actors/ActorLifecycle/

0개의 댓글