Dev./UE 언리얼 엔진

템플릿을 활용한 게임 개발 :: HUD_CharacterSelectPanel, HUD_CharacterInfo, HUD_MapTile

raindrovvv 2025. 4. 4. 21:35

📒학습 내용

주요 분석 내용

  1. 캐릭터 선택 패널(HUD_CharacterSelectPanel)
  2. 캐릭터 정보 표시(HUD_CharacterInfo)
  3. 맵 선택 시스템(HUD_MapTile)

📊 캐릭터 선택 패널

캐릭터 선택 시스템의 핵심 구조

캐릭터 선택 패널(Character Select Panel)은 플레이어가 게임에서 사용할 캐릭터를 선택하는 중요한 인터페이스

  • CharacterImage: 각 캐릭터의 시각적 표현을 담당하는 이미지 컴포넌트
  • NAME_TEXT: 캐릭터의 이름을 표시하는 텍스트 컴포넌트
  • Player_Text: 현재 어떤 플레이어가 캐릭터를 선택하고 있는지 표시

Enum_character를 활용한 캐릭터 타입 관리

캐릭터 유형을 관리하기 위해 Enum_character를 사용하고 있다. 아래와 같이 수정하여 우리 게임 컨셉에 맞게 진행하였다.

열거형을 사용하면 캐릭터 추가나 수정이 필요할 때 코드 전체를 수정할 필요 없이, 열거형 정의만 업데이트하면 된다. 이는 유지보수 측면에서 큰 이점을 제공한다.

🖼️ 캐릭터 정보 표시 : HUD_CharacterInfo

게임 중 캐릭터의 상태를 표시하는 HUD_CharacterInfo 컴포넌트는 다음과 같은 정보를 시각적으로 표현:

  • 캐릭터 초상화(Portrait): 캐릭터의 얼굴이나 상징적 이미지
  • 퍼센트 표시(Percent): 대난투 게임의 특징인 퍼센트 표시
  • 캐릭터 이름(Name): 현재 플레이 중인 캐릭터의 이름
  • 슈퍼바(SuperBar): 특수 게이지 표시

1
2
3

이미지 1: 블루프린트의 시작 부분

  • 이벤트 구성(Event Construct)에서 시작하여 0.3초 지연 후 실행.
  • "Get Game Instance"를 통해 게임 인스턴스를 가져온다.
  • "Cast To GI_FighterGameInstance"로 특정 게임 인스턴스 유형으로 변환한다.
  • "Get All Actors Of Class"로 BP_Fighter 클래스의 모든 액터를 가져온다.
  • "For Each Loop"를 사용하여 각 파이터에 대해 반복 작업을 수행.
  • 각 파이터의 "Player No"(플레이어 번호) 속성에 접근한다.

이미지 2: 플레이어 번호에 따른 색상 분기 처리

  • 배열 요소를 처리하는 루프에서 각 파이터의 플레이어 번호를 기준으로 분기한다.
  • Branch(분기) 노드를 통해 조건에 따라 다른 경로로 실행한다.
  • "Select" 노드는 플레이어 번호(0, 1, 2, 3)에 따라 다른 색상을 선택한다.
    • Option 0: 파란색
    • Option 1: 빨간색
    • Option 2: 녹색
    • Option 3: 노란색
  • 선택된 색상은 "SET" 노드를 통해 플레이어에게 적용됨.

이미지 3: UI 요소와 재질 설정 부분

  • "Set Image"와 "Set Brush from Texture" 노드를 사용하여 UI 이미지를 설정.
  • "Set Vector Parameter Value"는 재질의 "color" 파라미터 설정.
  • "Get Dynamic Material"을 통해 동적 재질을 가져온다.
  • 각 파이터에 대해 "Portrate"(초상화)와 같은 UI 요소 설정.

캐릭터 아이콘(HUD_CharacterSelectTile)

HUD_CharacterSelectTile


🗺️ 맵 선택 시스템 : HUD_MapTile 컴포넌트 설계

HUD_MapTile


💡 블루프린트 최적화 및 유지보수 팁

해당 템플릿을 분석할 수록 블루프린트 노드 관리 중요성을 깨닫게 된다...

효율적인 노드 연결 방법

  1. 함수 모듈화: 반복되는 로직은 함수로 분리하여 재사용
  2. 변수 그룹화: 관련 변수들은 카테고리로 그룹화하여 관리
  3. 주석 활용: 복잡한 로직에는 주석을 추가하여 나중에 쉽게 이해할 수 있도록...!!!!!!!!