Pawnextension#3 9:19 질문이 있습니다.
우선 SetupPlayerInputComponent() 에서 CheckDefaultInitialization() 을 호출하여 PawnExtensionComponent 의 상태를 업데이트 하는 것으로 보이는데, 이 시점에서 PlayerController 가 존재하기 때문에 DataAvailable 로 넘어가게 된다 라는 것까지는 이해할 수 있었습니다.
근데 자신의 업데이트 과정은 CheckDefaultInitialization() 내부에서의 ContinueInitStateChain(StateChain) 이 호출될 때 진행되는 것으로 알고 있는데, 코드상에서 보이듯 이 호출 이전에 implementers의 CheckDefaultIntialization() 호출을 먼저 한 다음에 자신의 상태 업데이트가 이루어지는 것이 맞는지 확인하고 싶습니다.
왜냐면 강의에선 마치 ContinueInitStateChain(StateChain) 가 먼저 이루어진 다음에 Implementers 의 CheckDefaultIntialization() 를 호출하는 것처럼 말하는 걸로 느껴졌습니다.
Answer 2
0
호출 순서는 바뀔 수 있습니다.
일반적으로는 PawnExtensionComponent가 관리해서 컴포넌트들을 업데이트 해주는게 맞겠지만 추가적인 조건인 모든 컴포넌트가 Data_Available 할 때 PawnExtensionComponent이 업데이트가 가능하니 이 경우에만 예외적으로 다른 컴포넌트들이 Data_Available 하게 되면 PawnExtensionComponent에게 알려주게 되고 그러면서 다른 컴포넌트들에게 업데이트 하라고 요청하는 방식입니다.
0
안녕하세요, 인프런 AI 인턴입니다. hush park님.
Pawnextension#3 강의에서 설명하신 내용에 대해 조금 더 구체적으로 설명드리겠습니다. SetupPlayerInputComponent()에서 CheckDefaultInitialization()은 PawnExtensionComponent의 상태를 업데이트하는 역할을 하고, PlayerController가 존재하기 때문에 DataAvailable로 넘어가게 됩니다.
이 과정에서 CheckDefaultInitialization()의 로직은 다음과 같은 순서를 따라 진행됩니다:
Implementers의 CheckDefaultInitialization 호출: 먼저, implementers의
CheckDefaultInitialization()이 호출됩니다. 이는 상속받은 클래스들 각각이 초기화될 수 있도록 설계된 과정입니다.ContinueInitStateChain 호출: implementers가 완료된 후에
ContinueInitStateChain(StateChain)이 호출됩니다. 이 함수는 상태 체인을 계속 진행시켜, 다음 단계의 상태를 설정하거나 초기화할 수 있도록 합니다.
따라서, 말씀하신 대로 implementers의 CheckDefaultIntialization()이 먼저 호출되고, 그 후에 ContinueInitStateChain(StateChain)의 호출로 자신의 상태 업데이터가 이루어지는 것이 맞습니다. 강의에서 설명된 순서와 다르게 느껴지셨다면, 아마도 강의 내용이나 표현에서 오해가 있었던 것 같습니다.
아래는 관련 질문과 답변을 참고할 수 있는 유사한 스레드를 소개해드립니다:
- “MyCharacter는 어떻게 MyAnimInstance의 존재를 아는지”: 언리얼 엔진의 동작 메커니즘과 관련된 질문으로, 다양한 초기화 과정에 대한 설명이 포함되어 있습니다.
관련 질문에 대한 해답이 부족할 경우, 이어서 질문을 더해 주시면, 강사님께서 곧 직접 답변해 주실 것으로 기대합니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
AddGameFrameworkComponentReceiver vs AddExtensionHandler
0
5
0
B_TeleportToUserFacingExperience가 추가로 생성되지 않습니다.
0
51
2
.
0
56
1
SpawnDefaultPawnAtTransform_Implementation이 호출되지 않습니다.
0
56
2
Input Subsystem 에서 오류가 발생합니다
0
62
1
7강 GameMode와 Modules관련 질문드립니다.
0
52
1
LyraFrontEnd 에서 로딩화면에서 넘어가지 않는 원인이 뭔지 질문드립니다.
0
81
2
리소스 이주했는데 안보이는데 어떻게 해야하나요?
0
84
3
TakeFromAbilitySystem 함수에서 Array 에 대한 remove 는 수행하지 않나요?
0
55
1
CircumferenceMarkerWidget의 bReticleCornerOutsideSpreadRadius 초기화 관련
0
58
1
Pawn 교체, Possess 후 위젯이 이전 값(상태)을 잘못 보여줄 때 처리법이 궁금합니다.
0
73
2
Experience 재시작
0
77
2
Log 파트에서 Subtitution Macro Call 를 사용하는 방법이 무엇인가요?
0
79
2
설치후 빌드하는데 에러가 발생하고 인텔리센스도 잘 활성화되지 않습니다.
0
201
1
FPerContextData에 대해 질문이 있어요
0
47
2
OnGameFeatureActivating와 WorldContext관해 질문 있습니다.
0
66
1
GameFeature Action 및 Common UI Widget 생성 관련 질문
0
78
1
가비지컬렉션 관련 질문있습니다.
0
94
3
Travel관련해서 질문 있습니다.
0
59
1
IMC가 먹통이에요
0
83
2
PawnExtension #3 에서 말한 라이라 공식문서가 뭔가요?
0
64
1
PawnExtensionComponent::SetPawnData에서의 CheckDefaultInitialization
0
54
1
미니맵 제작
0
84
2
UGameUIManagerSubsystem::ShouldCreateSubsystem 이상한 것 같은데요
0
74
2

