강의

멘토링

커뮤니티

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

cssrex2002님의 프로필 이미지
cssrex2002

작성한 질문수

실전! 언리얼 소울라이크 개발: A to Z

입력 시스템과 캐릭터 이동

C++ 생성자 값 관련 질문입니다.

작성

·

22

·

수정됨

0

 

2장 강의에서 생성자에서 이것저것 값을 변경했었는데 (bUseController 등) 이게 적용이 안 됩니다.

 

우선순위가
C++ 생성자 값 < 블루프린트 디테일 패널 설정값

인 건지 블루프린트 디테일 패널에서 직접 체크 표시가 되어 있는 기본값이 유지가 됩니다.

 

막상 카메라 위치 조절 같은 건 적용이 되는데 뭐가 문제인지 잘 모르겠습니다.

 

첨부한 사진입니다.

LOG를 띄워서 확인을 해봤는데, 생성자에서는 분명 false로 들어간 값이, BeginPlay가 실행되니까 블루프린트 디테일 기본 값인 true로 자동으로 바뀝니다.

11.png.webp

 

22.png.webp

 

답변 1

0

Spector님의 프로필 이미지
Spector
지식공유자

안녕하세요.

질문 하신 생성자에서 프로퍼티값을 변경했는데 블루프린트에 설정된 값으로 적용되는 문제는 버그나 오류가 아닙니다. 이것은 언리얼 엔진의 의도된 설계입니다.

언리얼 엔진은 객체를 생성할 때 대략적으로 다음과 같은 순서를 거칩니다

C++ 생성자 호출: 엔진이 실행될 때 해당 클래스의 CDO를 생성하며 생성자 코드를 실행합니다.

블루프린트 데이터 로드: C++ 클래스를 상속받은 블루프린트 에셋이 로드됩니다. 이때, 에디터에서 사용자가 수정한 값들이 C++에서 설정한 기본값 위에 덮어씌워집니다.

인스턴스 생성: 게임 월드에 캐릭터를 배치하면, 블루프린트에 저장된 최종 값을 가지고 인스턴스가 생성됩니다.

즉, 간단하게 설명하면 생성자에서 설정한 프로퍼티값은 기본값 입니다.

실제 값은 블루프린트에서 설정한 값이라고 생각하시면 됩니다.

 

참고로 블루프린트에서 해당 프로퍼티 값 옆에 보시면 C++ 클래스에서 설정한 기본값으로 리셋하는 버튼이 있습니다.

이 버튼이 있는 경우는 C++ 클래스의 기본값과 블루프린트의 값이 다르다는 뜻입니다.

 

그럼 좋은 하루 되세요^^

 

 

 

cssrex2002님의 프로필 이미지
cssrex2002

작성한 질문수

질문하기