언리얼 엔진5 Basic - 캐릭터 스탯과 위젯

타입·2024년 4월 4일
0

언리얼 강의

목록 보기
14/47

캐릭터 스탯과 위젯

캐릭터 스탯의 설정

  • 액터 컴포넌트를 활용한 스탯의 설계
    액터에 부착할 수 있는 컴포넌트 중 트랜스폼이 없는 컴포넌트
    액터의 기능을 확장할 때 컴포넌트로 분리해 모듈화할 수 있음
    스탯 데이터를 담당하는 컴포넌트와 UI 위젯을 담당하는 컴포넌트로 분리
    액터는 두 컴포넌트가 서로 통신하도록 중개하는 역할로 지정
  • 언리얼 델리게이트를 활용한 발행 구독 모델의 구현
    푸시(Push) 형태의 알림(Notification)을 구현하는데 적합한 디자인 패턴
    스탯이 변경되면 델리게이트에 연결된 컴포넌트에 알림을 보내 데이터를 갱신
    스탯 컴포넌트와 UI 컴포넌트 사이의 느슨한 결합의 생성

액터의 초기화 과정

  • 위젯 컴포넌트와 위젯
    위젯 컴포넌트는 액터 위에 UI 위젯을 띄우는 컴포넌트
    3차원 모드와 2차원 모드를 지원
    위젯 컴포넌트는 컨테이너 역할만 할 뿐, 둘은 서로 독립적으로 동작함
  • 위젯 컴포넌트의 초기화 과정
    발행 구독 모델의 구현을 위해 위젯 컴포넌트의 초기화 단계를 파악할 필요가 있음
    UI 관련 컴포넌트는 액터의 BeginPlay() 이후에 호출되고 있음
    생성 시 InitWidget() 함수와 NativeConstruct() 함수를 호출
  • 위젯 컴포넌트와 위젯의 확장
    위젯에 소유한 액터 정보를 보관할 수 있도록 클래스를 확장 (ABUserWidget)
    위젯 컴포넌트 초기화 단계에서 이를 설정할 수 있도록 클래스를 확장 (ABWidgetComponent)
    위젯 초기화 단계에서 부모 클래스 정보를 읽고 자신을 등록 (ABCharacterWidgetInterface)

실습코드

https://github.com/dnjfs/ArenaBattle/commit/e1bfd2c779c82a314863d28e9cdcba8a2b479219

  • UMG 모듈 추가
    UMG를 사용하기 위해 uproject 파일의 Modules에 UMG 추가

  • UWidgetComponent 도움되는 함수
    GetWidget(): 위젯 컴포넌트에 세팅된 위젯 가져오기
    GetOwner(): 컴포넌트를 소유한 액터 가져오기 (코드에선 캐릭터를 가져옴)

  • 위젯 인터페이스 추가
    캐릭터 위젯을 담당하는 인터페이스를 추가하여 캐릭터에 상속시키고, 상속받은 캐릭터쪽에서 구현
    마찬가지로 사용하는 쪽에서 인터페이스의 클래스로 캐스팅하여 인터페이스 상속 여부 검사 가능

  • 델리게이트 전달
    피격당하여 스탯 컴포넌트에서 HP가 변경되면 델리게이트를 Broadcast하여 등록된 함수들 호출

profile
주니어 언리얼 프로그래머

0개의 댓글