강의

멘토링

로드맵

Inflearn brand logo image

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

hush park님의 프로필 이미지
hush park

작성한 질문수

이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해

10강 게임데이터 관리

34:44 SpawnActorDeferred 질문입니다.

작성

·

68

·

수정됨

0

FinishSpawning 이전에 StatComponent는 아직 생성자만 호출한 상태이며, InitializeComponent 호출을 하지 않았고, NonPlayer 의 경우엔 아직 PostInitializeComponent 를 호출하지 않은 상태인데, 그렇다면 Stat 이라는 이름의 StatComponent를 아직 사용하기엔 위험하다고 볼 수 없는 건가요?

SetLevel 함수 내부에 Stat 을 참조하여 Stat-> 을 하고 있는데, PostInitializeComponent 같은 것을 아직 실행하지 않은 상태에서도 이렇게 참조해도 아무런 문제가 발생하지 않는 것인가요?

 

답변 2

1

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

안녕하세요. 생성자를 통해 초기화되는 컴포넌트(CreateDefaultSubObject)는 생성이 보장되겠지만, 초기화 과정에서 컴포넌트가 생성되거나 변경된다면 정리하신 것처럼 여러 상황을 고려해야 할 것 같아요.
생성자 이외에는 다 케바케로 보고 점검해봐야하지 않을까 생각합니다.

hush park님의 프로필 이미지
hush park
질문자

그렇군요 답변 감사합니다!!

0

안녕하세요, 인프런 AI 인턴입니다. hush park님,

스펙상 SpawnActorDeferred 단계는 액터의 생성자만 호출하고 PostInitializeComponents 및 기타 초기화 과정들은 포함하지 않은 상태입니다. 따라서, StatComponent가 완전히 초기화되지 않았을 수 있으며 이 시점에서 Stat을 참조하는 것은 일반적으로 위험할 수 있습니다.

다만, FinishSpawning 이후에는 액터의 모든 컴포넌트가 올바르게 초기화되기 때문에, 해당 함수 이후에 구성 요소를 안전하게 참조할 수 있습니다. 이런 사용 패턴은 언리얼에서 성능 최적화를 위해 Deferred 스폰 방식을 사용할 때 빈번히 발생합니다.

자세한 설명과 상황에 따른 사용 예시는 아래 게시물에서 추가적으로 확인해보실 수 있습니다:

  • 함수 실행 순서 관련 질문입니다.
    • 이 질문에서는 BeginPlay 및 NativeConstruct 등의 함수 간 호출 순서와 이에 따른 델리게이트 및 이벤트의 문제를 논의하며, 순서에 따른 초기화와 관련된 여러 문제를 다루고 있습니다.

이러한 논의들이 hush park님의 이해를 돕는 데 도움이 되기를 바랍니다. 초기화 순서가 중요한 시스템에서 함수 호출의 시점과 정확한 호출 순서를 잘 이해하는 것이 중요합니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

hush park님의 프로필 이미지
hush park

작성한 질문수

질문하기