[Unreal] 에디터에서 BP의 컴포넌트의 디테일 패널이 보이지 않는 경우

전지훈·2022년 2월 8일
0

Unreal

목록 보기
17/25


해당 문제는 주로 상위 혹은 해당 BP가 CPP에서 만든 Actor를 상속받은 경우 발생하는 것 같다. 위와 같이 컴포넌트를 클릭하여도 디테일 패널에 아무것도 보이지 않는다.

이 문제는 모종의 이유로 인해 UPROPERTY 설정 된 컴포넌트 변수가 이상값으로 설정되어 있는 상황으로 보인다.

이로인해 디테일 패널에 보이지 않을 뿐만 아니라 런타임 시에 해당 컴포넌트 변수안에 null값이 들어가 있어 크래시를 유발한다.


상위 BP에서도 동일한 증상을 보인다.

종종 위와 같이 최상위 BP에서는 정상적으로 보이기도 하지만 아닌 경우도 있다.

이 때 해결방법은 문제가 되는 BP 중 가장 상위 BP의 Class Settings에서 Parent Class를 클래스를 Actor로 변경한다.

변경하면 이렇게 컴파일 에러가 발생할텐데(상속에 기반한 구현이 딱히 존재하지 않는다면 발생하지 않는다.) 컴파일+저장 후 다시 Parent Class를 원래 설정 되었던 상위 클래스로 변경후 다시 컴파일+저장 한다.

해당 작업 수행 후 컴포넌트의 디테일 패널이 복구 된 것을 볼 수 있다.

하위 BP에서도 정상적으로 작동한다.

이 문제는 해결한 것 같으면 또 나타나서 CPP에서 엑터에 컴포넌트를 추가하는 것을 공포스럽게 만들 정도로 엄청나게 스트레스를 받았는데 명확한 해결방법을 드디어 찾은 것 같아서 정말 후련하다.

이 방법 이외에도 아래 방법들로도 해결 가능 한 경우도 있으나 모두 하자가 있으니 위의 방법을 추천한다.

  • BP를 다시 작성
    - 기존 작성 내용들 복사에 어려움이 있음
  • 해당 컴포넌트 변수를 완전히 제거 후 컴파일 한 뒤, 문제 되는 BP 리로드+컴파일+저장 후 다시 컴포넌트 변수 생성 후 다시 컴파일 한 뒤 BP 리로드+컴파일+저장
    - 과정도 복잡하고 시간도 오래걸림
  • 런타임에 동적으로 컴포넌트를 추가
    - BP에서의 에셋/변수 할당을 하지 못해 생산성 저하

이 방법을 포럼에 적은 HerryHighDef에게 정말 선물을 해주고 싶을 만큼 고마움을 느낀다.

이후에 알게 되었는데 이 방법에는 한가지 문제점이 있다. 이 방법을 수행하면 BP에서 수정된 프로퍼티들이 전부 기본 값 혹은 부모값으로 초기화 된다. 단, BP의 노드들은 정상적으로 복구된다.

출처 : 언리얼 포럼 - HerryHighDef의 답변

profile
10%의 확신과 90%의 어.. 이게 왜 되지?

0개의 댓글