🚀 요약: 컴포넌트 기반 스킬/아이템 슬롯 시스템 설계 및 구현
오늘은 유연한 전투 시스템 구축을 위해 Enhanced Input과 ActorComponent 간의 상호작용 로직을 설계했습니다. 특히, 직업별로 달라질 수 있는 스킬 구조를 컴뱃 컴포넌트에서 통합 관리하도록 구현하여 확장성을 확보했습니다.
1. 시스템 구조 설계 (Architecture)
단순한 기능 구현을 넘어, 각 클래스의 역할을 명확히 분리(Decoupling)했습니다.
- T3PlayerController: 사용자 입력을 받아 CombatComponent의 적절한 명령 함수로 전달.
- T3CombatComponent (Control Tower): 현재 선택된 스킬/아이템/포션 슬롯 번호(State)를 관리하고, 실제 실행 주체에게 명령을 위임.
- T3SkillComponentBase (Execution): 실제 스킬 로직(애니메이션, 투사체 스폰 등)을 수행.
2. 주요 구현 내용
① Enhanced Input을 통한 6종 입력 바인딩
전투 상황에서의 기민한 조작을 위해 스킬/소모품/포션의 슬롯 전환(Toggle) 및 사용(Execute) 입력을 분리하여 구현했습니다.
- Skill: Shift(전환) / Q(사용)
- Consumable: R(전환) / E(사용)
- Potion: 2(전환) / 1(사용)
② 슬롯 순환 로직 (Expansion-Friendly)
마법사 등 특정 직업이 3개 이상의 슬롯을 사용할 경우를 대비하여, 모듈러(Remainder) 연산을 이용한 유연한 슬롯 전환 로직을 적용했습니다.
C++
// 2개일 땐 1->2->1, 3개일 땐 1->2->3->1로 자동 대응
CurrentSkillSlot = (CurrentSkillSlot % MaxSkillSlots) + 1;
③ 컴포넌트 간 데이터 브릿지 (SetSkillComponent)
DataAsset에서 동적으로 생성된 직업별 스킬 컴포넌트를 CombatComponent가 인지할 수 있도록 캐싱(Caching) 및 세팅 함수를 구현했습니다.
3. 기술적 고민과 해결 (Troubleshooting)
- 문제: 스킬 컴포넌트에서 슬롯 번호를 관리하니, 아이템 슬롯 체인지 추가 시 코드가 파편화됨.
- 해결: ESlotType 열거형을 도입하여 CombatComponent에서 통합 관리하도록 변경. 이를 통해 UI 팀과의 인터페이스(Delegate)를 하나로 통일하여 협업 효율을 높임.
- 발전: 문자열 기반의 태그 대신 GameplayTags를 도입하여 데이터 기반(Data-Driven) 설계의 안정성을 확보하기 시작함.
4. 핵심 코드 (T3CombatComponent - 통합 실행)
C++
void UT3CombatComponent::ExecuteSlotAction(ESlotType Type)
{
switch (Type)
{
case ESlotType::Skill:
if (SkillComp) SkillComp->ExecuteSkill(CurrentSkillSlot);
break;
case ESlotType::Potion:
// 포션 사용 로직
break;
}
}
🎯 내일의 목표
- FSkillAttributes 구조체 기반 DataTable 생성 및 데이터 바인딩.
- 스킬 ID를 통해 데이터 테이블에서 쿨타임, 데미지, 마나 소모량 로직 연결.
- GameplayTags를 활용한 패시브 효과(신성 게이지 등) 설계 시작.
'언리얼엔진5 공부' 카테고리의 다른 글
| [TIL] UE 5 스킬 시스템 핵심 로직 - 스왑 및 장착 메커니즘 (0) | 2026.02.10 |
|---|---|
| [TIL] UE5 콜리젼 & 오버랩 초기화 순서에 따른 이슈 (0) | 2026.02.09 |
| [TIL] Unreal Engine 5: 동적 록온 시스템 및 적응형 카메라 연출 (2) | 2026.02.04 |
| [TIL] UE5 C++: 캐릭터 강제 이동 및 회전 시스템 구현 (애니메이션 동기화 및 물리적 궤도 이탈 해결) (1) | 2026.02.04 |
| [TIL] Unreal Engine 5: FDamageEvent 상속을 통한 커스텀 데미지 시스템 구현 (0) | 2026.01.28 |