Extension 초기화 순서
C++ 표준에서는 부모 클래스의 멤버변수들이 자식클래스의 멤버 변수보다 우선적으로 초기화 되는 것이라고 배웠습니다. 그러면 HAKCharacterBase를 만들어서 Extension을 추가하고 Base를 상속받은 HAKCharacter에서 HeroComponent를 추가하는 방식도 고려해 볼 수 있을 텐데 이것도 유효한 방법인가요? 아니면 다른 문제가 있어서 블루프린트에서 컴포넌트를 추가하는 것일까요?
답변 2
1
이건 가능은 할 수는 있지만 완벽하게 보장은 되지 않습니다. 일단 생성자 단계에서 CreateDefaultObject를 이용해서 생성하게 되는데 언리얼은 CDO 관리를 일반적인 C++과 다르게 해서 항상 C++ 다음 순위로 초기화 되는 Blueprint에서 추가하는 것이 좋습니다.
0
안녕하세요, 인프런 AI 인턴입니다. 강건희님.
당신의 질문은 C++의 클래스 초기화 및 상속 구조와 관련된 것으로 보입니다. 보통 C++에서는 부모 클래스의 멤버가 자식 클래스의 멤버보다 먼저 초기화됩니다. 이는 C++의 표준이며, 객체 생성 시 안전성을 높이는 데 중요한 역할을 합니다.
HAKCharacterBase와 Derived 클래스(HeroComponent 추가)에 대한 접근 방식:
HAKCharacterBase에 Extension 추가: 이는 부모 클래스에 주어진 로직과 초기화를 추가하여 이후의 모든 자식 클래스에서 그 기능을 사용할 수 있도록 합니다.
Derived 클래스에서 HeroComponent 추가: 자식 클래스(HAKCharacter)에서 구체적인 기능이나 추가 컴포넌트를 넣는 방식입니다. 부모 클래스에서는 일반적인 로직만 가지고, 특정 기능은 자식 클래스에서 담당하는 구조라고 볼 수 있습니다.
블루프린트에서 컴포넌트를 추가해야 하는 이유는 다양할 수 있습니다. 특히, 언리얼 엔진의 경우 비주얼 Scripting 방식인 블루프린트를 사용하면 많은 장점이 있는데, 이는 프로그래밍에 익숙하지 않은 디자이너나 기획자들도 쉽게 접근할 수 있기 때문입니다. 코드와 블루프린트를 적절히 섞어서 사용하면, 프로젝트의 복잡도를 효과적으로 관리할 수 있습니다.
관련된 답변을 아래에서 참고하실 수 있습니다:
블루프린트 상속 질문입니다.: 블루프린트에서의 상속과 변경 사항 반영에 대한 다른 질문과 답변을 확인하실 수 있습니다.
Static 변수 초기화와 사용에 대한 이해: static 키워드가 함수와 클래스 내에서 어떻게 사용되는지에 대한 이해를 높일 수 있는 질문입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
AddGameFrameworkComponentReceiver vs AddExtensionHandler
0
22
0
B_TeleportToUserFacingExperience가 추가로 생성되지 않습니다.
0
57
2
.
0
59
1
SpawnDefaultPawnAtTransform_Implementation이 호출되지 않습니다.
0
58
2
Input Subsystem 에서 오류가 발생합니다
0
65
1
7강 GameMode와 Modules관련 질문드립니다.
0
55
1
LyraFrontEnd 에서 로딩화면에서 넘어가지 않는 원인이 뭔지 질문드립니다.
0
82
2
리소스 이주했는데 안보이는데 어떻게 해야하나요?
0
86
3
TakeFromAbilitySystem 함수에서 Array 에 대한 remove 는 수행하지 않나요?
0
57
1
CircumferenceMarkerWidget의 bReticleCornerOutsideSpreadRadius 초기화 관련
0
61
1
Pawn 교체, Possess 후 위젯이 이전 값(상태)을 잘못 보여줄 때 처리법이 궁금합니다.
0
74
2
Pawnextension#3 9:19 질문이 있습니다.
0
61
2
Experience 재시작
0
79
2
Log 파트에서 Subtitution Macro Call 를 사용하는 방법이 무엇인가요?
0
81
2
설치후 빌드하는데 에러가 발생하고 인텔리센스도 잘 활성화되지 않습니다.
0
204
1
FPerContextData에 대해 질문이 있어요
0
49
2
OnGameFeatureActivating와 WorldContext관해 질문 있습니다.
0
68
1
GameFeature Action 및 Common UI Widget 생성 관련 질문
0
80
1
가비지컬렉션 관련 질문있습니다.
0
94
3
Travel관련해서 질문 있습니다.
0
60
1
IMC가 먹통이에요
0
86
2
PawnExtension #3 에서 말한 라이라 공식문서가 뭔가요?
0
65
1
PawnExtensionComponent::SetPawnData에서의 CheckDefaultInitialization
0
58
1
미니맵 제작
0
88
2





