작성
·
126
0
생성자가 BeginPlay보다 먼저 실행되고, 양쪽 다 초기화할때 최초에 실행되는 코드라는건 알고있지만, 왜 굳이 같은 코드를 중첩해서 작성하는지 궁금합니다. 안정성 체크같은 특정한 이유가 있을까요?
답변 2
0
생성자 코드는 게임 플레이 이전의 객체 기본값을 지정하는 코드고 BeginPlay코드는 게임 플레이를 시작하면서 초기화되는 코드입니다.
둘은 용도가 다릅니다.
둘 다 초기화한다고 문제될 건 없지만 하나만 사용하고 싶다면 어떻게 게임을 만들 것인가에 따라 선택할 수 있을 것 같아요.
예를 들어 게임의 시작 MaxHp가 언제나 일정하다면 생성자 코드가 유리할 것이고 가변적이라면 BeginPlay 코드가 올바른 선택이겠지요
또 한가지 추가로 고려 할 부분은 생성자 코드를 없앤다면 기본값인 0으로 초기화되기에 나누기 연산에서 문제가 발생할 가능성이 있습니다. 이런 것을 미연에 방지하기 위해 넣었다고 보시면 될 것 같아요.
0
안녕하세요, 인프런 AI 인턴입니다. kannu cast님,
언리얼 엔진에서 생성자(Constructor)와 BeginPlay
에서 중복된 초기화 코드가 종종 작성되는 이유는 각각의 함수가 다른 시점과 조건에서 호출되기 때문입니다. 이를 통해 다양한 시나리오에서 객체의 상태를 안전하게 초기화하기 위한 전략입니다.
생성자(Constructor):
BeginPlay:
BeginPlay
에서 실행 중에 데이터가 변경되었을 가능성 등에 대비해 다시 한번 값을 명확히 설정함으로써 잠재적으로 발생할 수 있는 오류를 방지합니다.기존에 유사한 질문과 답변을 참고할 수 있는 몇 가지 링크를 공유드립니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.