강의

멘토링

로드맵

Inflearn brand logo image

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

UE5님의 프로필 이미지
UE5

작성한 질문수

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

7강 캐릭터 스탯과 위젯

12:26 에서 왜 CurrentHp = MaxHp; 를 생성자와 BeginPlay 에서 중복해서 작성하는지 궁금합니다

작성

·

126

0

생성자가 BeginPlay보다 먼저 실행되고, 양쪽 다 초기화할때 최초에 실행되는 코드라는건 알고있지만, 왜 굳이 같은 코드를 중첩해서 작성하는지 궁금합니다. 안정성 체크같은 특정한 이유가 있을까요?

답변 2

0

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

생성자 코드는 게임 플레이 이전의 객체 기본값을 지정하는 코드고 BeginPlay코드는 게임 플레이를 시작하면서 초기화되는 코드입니다.

둘은 용도가 다릅니다.

둘 다 초기화한다고 문제될 건 없지만 하나만 사용하고 싶다면 어떻게 게임을 만들 것인가에 따라 선택할 수 있을 것 같아요.

예를 들어 게임의 시작 MaxHp가 언제나 일정하다면 생성자 코드가 유리할 것이고 가변적이라면 BeginPlay 코드가 올바른 선택이겠지요

또 한가지 추가로 고려 할 부분은 생성자 코드를 없앤다면 기본값인 0으로 초기화되기에 나누기 연산에서 문제가 발생할 가능성이 있습니다. 이런 것을 미연에 방지하기 위해 넣었다고 보시면 될 것 같아요.

0

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

언리얼 엔진에서 생성자(Constructor)와 BeginPlay에서 중복된 초기화 코드가 종종 작성되는 이유는 각각의 함수가 다른 시점과 조건에서 호출되기 때문입니다. 이를 통해 다양한 시나리오에서 객체의 상태를 안전하게 초기화하기 위한 전략입니다.

주요 이유:

  1. 생성자(Constructor):

    • 역할: 객체가 처음 생성될 때 기본값을 설정합니다.
    • 용도: 메모리를 할당하고 기본적인 초기화 작업을 수행합니다.
    • 특징: 모든 클래스 인스턴스화에 대해 호출되므로, 가장 기본적인 초기화가 필요합니다.
  2. BeginPlay:

    • 역할: 액터가 레벨에 스폰되었을 때 데이터를 초기화합니다.
    • 용도: 게임플레이 로직과 관련된 설정을 적용할 때 사용됩니다.
    • 특징: 레벨이 시작되면 실행되므로, 게임 내 상호작용 전에 필요한 초기값 설정이 가능하게 됩니다.

중복 작성 이유:

  • 다양한 시나리오에 대비: 개발자가 생성자에서 기본적인 값을 설정하지만, BeginPlay에서 실행 중에 데이터가 변경되었을 가능성 등에 대비해 다시 한번 값을 명확히 설정함으로써 잠재적으로 발생할 수 있는 오류를 방지합니다.
  • 안전성 및 유지보수성: 객체 초기화의 일관성을 유지하고, 특정 상황에서 데이터 누락이나 불일치를 방지하는 역할을 합니다. 코드를 작성하거나 수정할 때 명확한 초기값을 보장할 수 있습니다.

기존에 유사한 질문과 답변을 참고할 수 있는 몇 가지 링크를 공유드립니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.

현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

UE5님의 프로필 이미지
UE5

작성한 질문수

질문하기