강의

멘토링

로드맵

Inflearn brand logo image

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

eom5005님의 프로필 이미지
eom5005

작성한 질문수

실전! 언리얼 소울라이크 개발: A to Z

스태미나 UI 만들기

UUserWidget 생성자 선언하는 이유

작성

·

29

0

  1. UUserWidget의 생성자를 명시적으로 선언하는 경우가 흔한가요?

  2. 1번의 답이 '아니오'라면 이번에는 왜 빈 생성자를 선언하셨나요?

  3. UUserWidget의 생성자를 활용하는 대표적인 케이스 한 가지만 예로 들어주실 수 있나요?

답변 2

0

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

안녕하세요.

UUserWidget 이라고 해서 특별히 생성자를 사용하지 않는 것은 아닙니다.

생성자에서 초기화할 코드가 있다면 생성자를 선언하고 초기화 코드를 넣게 됩니다.

아마도 이후에 초기화 코드를 넣을 예정이거나 해서 생성자를 만들었거나 했을 텐데요. 결국은 쓰이지 않고 빈 상태로 있는 경우도 있습니다. 이런 경우는 특별한 의미는 없으니 무시 하셔도 됩니다^^

 

 

eom5005님의 프로필 이미지
eom5005
질문자

아시겠지만 UUserWidget의 생성자는 일반적인 UObject/Actor 계열의 객체와 다릅니다.

 

UUserWidget의 생성자 호출은 매우 초기 단계에 일어남으로 SlateUI 요소나 바인딩된 하위 위젯은 아직 생성되지 않은 상태입니다. 그래서 일반적인 '생성자'의 역할은 NativeConstruct()가 대신합니다. (강의에서도 생성자를 선언만 해두고 초기화 로직은 NativeConstruct 안에 구현하셨네요)

 

이러한 맥락에서 굳이 일반 생성자를 선언하신 특별한 이유가 있는 지 궁금해서 여쭈어 본 것입니다. 답변 내용을 보아하니 그냥 '습관적으로' 만들어 놓았다. 정도로 이해가 되는데. 맞나요?

그리고 강의를 다시 돌려보시면 아시겠지만 "우선 생성자부터 만들어주겠습니다.", "NativeConstruct()에서 처리하겠습니다."라고만 되어있지 '왜' 그렇게 해야되는 지가 없습니다.

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

네, 그런 맥락으로 이해 하시면 맞을 것 같습니다.

그럼 좋은 밤 되세요^^

0

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

언리얼 엔진에서 UUserWidget의 생성자를 명시적으로 선언하는 경우는 드물지만 필요할 때가 있습니다. 일반적으로 UUserWidget은 에디터에서 블루프린트를 통해 설정되고 사용하는 경우가 많기 때문에, 빈 생성자나 특별하게 추가할 로직이 없는 경우 생성자를 명시적으로 작성하지 않습니다. 하지만 핸드코딩이 필요한 경우나 특정 초기화 과정이 필요한 경우에는 명시적으로 생성자를 선언할 수 있습니다.

  1. UUserWidget의 생성자를 명시적으로 선언하는 경우:

    • 일반적으로 빈 생성자를 명시적으로 선언하는 경우는 흔하지 않습니다. 대부분의 경우는 언리얼 C++의 기본 동작을 그대로 따릅니다.
  2. 빈 생성자를 선언한 이유:

    • 특별한 초기화 작업이 필요할 경우 또는 특정 코드 가독성을 향상시키기 위한 목적으로 빈 생성자를 선언할 수 있습니다. 또한, 팀 간의 코드 스타일이나 프로젝트 관리 방법에 따라 생성자를 명시적으로 선언하여 문서를 남기는 경우도 있을 수 있습니다.
  3. UUserWidget의 생성자를 활용하는 대표적인 케이스:

    • 데이터 초기화: 예를 들어, 여러 위젯 컴포넌트를 조합하여 만든 복합 위젯에서 자식 위젯들을 동적으로 생성하거나 초기값을 설정하는 등의 작업을 생성자에서 설정할 수 있습니다. 이때, 생성자가 초기화 과정을 담당할 수 있습니다.

관련 토론 및 예시는 다음 링크에서 참고하실 수 있습니다:
- UUserWidget 생성자 활용 예시와 모범 사례

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

eom5005님의 프로필 이미지
eom5005

작성한 질문수

질문하기