반응형
👨💻 안녕하세요, 윌리 프로젝트의 윌리 입니다.
언리얼 엔진에서 두 가지 입력 시스템은 무엇이 있으며, 장단점은 어떻게 되는지 간략히 알아보았습니다.
질문 >
언리얼 엔진에서 두 가지 입력 시스템은 무엇이 있으며, 장단점은 어떻게 되나요?
답변 >
언리얼 엔진 5에서는 두 가지 입력 시스템을 제공합니다:
- 기존 입력 시스템 (Legacy Input System)
- 향상된 입력 시스템 (Enhanced Input System)
이 두 시스템은 플레이어 입력 처리와 관련된 도구를 제공하며, 각각 고유한 방식으로 작동합니다. 두 시스템은 언리얼 엔진에서 특정 상황에 따라 선택적으로 사용되며, 게임 플레이 요구 사항에 맞는 적합한 옵션을 선택할 수 있습니다.
1. 기존 입력 시스템 (Legacy Input System)
개요
- 기존 입력 시스템은 언리얼 엔진의 초기부터 제공된 입력 처리 방식으로, Project Settings > Input에서 설정합니다.
- 키보드, 마우스, 컨트롤러 등의 입력을 Action Mappings 및 Axis Mappings으로 분리하여 처리합니다.
특징
- Action Mappings:
- 버튼 클릭(예: Jump, Fire) 같은 단일 이벤트를 처리합니다.
- 키가 눌렸을 때(Pressed)와 뗐을 때(Released)의 이벤트를 제공합니다.
- Axis Mappings:
- 마우스 이동, 아날로그 스틱 입력처럼 연속적인 값(Float)을 처리합니다.
장점
- 간단함: 설정과 사용이 직관적이며, 소규모 프로젝트나 간단한 입력 처리에 적합합니다.
- 안정성: 오랜 시간 사용되어 테스트된 안정적인 시스템.
단점
- 확장성 부족: 복잡한 입력 로직, 입력 체계의 확장(예: 다중 입력 디바이스 지원)에 한계가 있음.
- 데이터 중심적 접근 부족: 입력 상태를 저장하고 다양한 방식으로 조작하는 데 제약이 있음.
2. 향상된 입력 시스템 (Enhanced Input System)
개요
- 향상된 입력 시스템은 언리얼 엔진 5에서 도입된 새로운 입력 처리 방식으로, 더 강력하고 유연한 입력 설정과 확장을 지원합니다.
- Enhanced Input Plugin을 활성화하여 사용할 수 있습니다.
특징
- Input Mapping Context:
- 키보드, 마우스, 컨트롤러 입력을 매핑 컨텍스트를 통해 정의하며, 각 컨텍스트는 서로 다른 입력 우선순위를 가질 수 있습니다.
- 예: 플레이어의 기본 입력과 차량 조작 입력을 분리.
- Input Actions:
- 각 입력에 대해 행동(Action)과 축(Axis)을 정의하고, 이를 동적으로 연결 및 해제할 수 있습니다.
- 모듈식 처리:
- 각 입력 이벤트를 델리게이트 기반으로 처리하여 복잡한 입력 로직을 유연하게 설계 가능.
장점
- 유연성과 확장성:
- 멀티플레이어 게임, 다양한 입력 장치 지원, 다이내믹 입력 체계 변경 등에 적합.
- 데이터 중심 설계:
- 입력 상태를 관리하는 데 뛰어난 데이터 중심 접근 방식을 제공.
- 동적 입력 변경:
- 상황(예: 캐릭터 상태, 차량 모드)에 따라 입력 체계를 동적으로 전환할 수 있음.
- 키 리매핑:
- 플레이어가 입력을 자유롭게 설정할 수 있는 리매핑 기능을 쉽게 구현 가능.
단점
- 학습 곡선:
- 기존 입력 시스템보다 복잡하며, 사용법을 익히는 데 시간이 더 필요.
- 성능 오버헤드:
- 일부 간단한 입력 처리에는 불필요하게 복잡한 구현일 수 있음.
장단점 비교
특징 | 기존 입력 시스템 | 향상된 입력 시스템 |
구조적 단순성 | 간단하고 직관적 | 더 복잡하지만 유연한 구조 |
확장성 | 제한적 | 매우 유연하며 확장 가능 |
입력 리매핑 | 기본 지원 없음 | 내장 지원 |
멀티 디바이스 지원 | 제한적 | 다양한 입력 장치 지원 |
동적 입력 전환 | 수동으로 처리 | 컨텍스트 기반으로 동적 처리 가능 |
러닝 커브 | 낮음 | 높음 |
활용 예시
기존 입력 시스템
void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override
{
PlayerInputComponent->BindAction("Jump", IE_Pressed, this, &AMyCharacter::Jump);
PlayerInputComponent->BindAxis("MoveForward", this, &AMyCharacter::MoveForward);
}
향상된 입력 시스템
void AMyCharacter::SetupInputComponent()
{
UEnhancedInputComponent* Input = Cast<UEnhancedInputComponent>(InputComponent);
Input->BindAction(JumpAction, ETriggerEvent::Started, this, &AMyCharacter::Jump);
Input->BindAction(MoveAction, ETriggerEvent::Triggered, this, &AMyCharacter::Move);
}
어떤 시스템을 선택해야 할까?
- 간단한 프로젝트:
- 기존 입력 시스템이 적합. 간단한 단일 플레이어 게임에서는 충분히 유효합니다.
- 복잡한 입력 로직:
- 멀티플레이어, 다양한 입력 장치 지원, 동적 입력 체계 변경이 필요하다면 향상된 입력 시스템을 사용하는 것이 좋습니다.
결론
언리얼 엔진에서 기존 입력 시스템은 간단한 프로젝트에서 유용하며, 향상된 입력 시스템은 복잡하고 유연한 입력 처리 요구 사항에 적합합니다. 프로젝트의 복잡성과 요구 사항에 따라 적합한 입력 시스템을 선택해야 합니다. 향상된 입력 시스템은 미래 지향적인 설계로, 새로운 프로젝트에서는 이를 사용하는 것이 권장됩니다.
"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
🎬 유튜브 채널 🎬
🎬 치지직 채널 🎬
반응형