인프런 커뮤니티 질문&답변
C++ 생성자 값 관련 질문입니다.
작성
·
22
·
수정됨
0
2장 강의에서 생성자에서 이것저것 값을 변경했었는데 (bUseController 등) 이게 적용이 안 됩니다.
우선순위가
C++ 생성자 값 < 블루프린트 디테일 패널 설정값
인 건지 블루프린트 디테일 패널에서 직접 체크 표시가 되어 있는 기본값이 유지가 됩니다.
막상 카메라 위치 조절 같은 건 적용이 되는데 뭐가 문제인지 잘 모르겠습니다.
첨부한 사진입니다.
LOG를 띄워서 확인을 해봤는데, 생성자에서는 분명 false로 들어간 값이, BeginPlay가 실행되니까 블루프린트 디테일 기본 값인 true로 자동으로 바뀝니다.


답변 1
0
안녕하세요.
질문 하신 생성자에서 프로퍼티값을 변경했는데 블루프린트에 설정된 값으로 적용되는 문제는 버그나 오류가 아닙니다. 이것은 언리얼 엔진의 의도된 설계입니다.
언리얼 엔진은 객체를 생성할 때 대략적으로 다음과 같은 순서를 거칩니다
C++ 생성자 호출: 엔진이 실행될 때 해당 클래스의 CDO를 생성하며 생성자 코드를 실행합니다.
블루프린트 데이터 로드: C++ 클래스를 상속받은 블루프린트 에셋이 로드됩니다. 이때, 에디터에서 사용자가 수정한 값들이 C++에서 설정한 기본값 위에 덮어씌워집니다.
인스턴스 생성: 게임 월드에 캐릭터를 배치하면, 블루프린트에 저장된 최종 값을 가지고 인스턴스가 생성됩니다.
즉, 간단하게 설명하면 생성자에서 설정한 프로퍼티값은 기본값 입니다.
실제 값은 블루프린트에서 설정한 값이라고 생각하시면 됩니다.
참고로 블루프린트에서 해당 프로퍼티 값 옆에 보시면 C++ 클래스에서 설정한 기본값으로 리셋하는 버튼이 있습니다.
이 버튼이 있는 경우는 C++ 클래스의 기본값과 블루프린트의 값이 다르다는 뜻입니다.
그럼 좋은 하루 되세요^^




