오늘 공부한 내용📝
오늘은 강의에서 Unity의 기존 InputManager와 새로운 InputSystem의 차이점에 대해 학습했다. 기존 InputManager는 다양한 입력 장치 대응에 한계가 있고, 게임 로직과의 결합으로 인해 유지보수에 어려움이 있었다. 이러한 문제점들을 해결할 수 있는 새로운 InputSystem의 개념과 사용법을 배웠으며, 이후 관련 내용을 추가로 공부하고 해당 내용을 정리 해봤다.
기존 InputManager의 문제점은?🤔
기존의 Unity Input Manager는 입력 처리 기능은 제공했지만, 복잡한 입력 처리나 멀티플랫폼 지원에는 한계가 있었다. 특히 다양한 입력 장치에 일관성 있게 대응하기 어렵고, 입력과 게임 로직의 결합으로 인해 코드의 유지보수가 어려운 문제점이 있었다.
- 다양한 입력 장비 대응의 어려움:
- 기존의 Input Manager는 키보드, 마우스, 조이스틱 등 다양한 입력 장비를 일관되게 지원하는 데 한계가 있었다.
- 특정 장비에 맞춰 하드코딩된 키 값을 사용하거나, 입력 로직을 변경해야 하는 번거로움이 있다.
예를 들어, 키보드 입력을 게임패드 입력으로 변경하려면, 각 입력마다 개별적으로 로직을 수정해야 하는 비효율성이 발생 했다.
- 입력 처리와 게임 로직의 결합:
- 입력을 받아 처리하는 코드와 실제 게임 로직 코드가 서로 분리되지 않아 단일 책임 원칙을 위배하게 된다.
예를 들어, Update 메서드에서 직접 Input.GetAxis나 Input.GetButton 등을 호출하여 로직을 수행하면, 입력 방식을 변경할 때 게임 로직도 함께 수정해야 한다. - 이는 입력 시스템을 변경하거나 새로운 장치를 추가할 때마다 코드 전반에 걸쳐 수정이 필요해 유지보수에 어려움을 준다.
- 입력을 받아 처리하는 코드와 실제 게임 로직 코드가 서로 분리되지 않아 단일 책임 원칙을 위배하게 된다.
New InputSystem💡
Unity의 새로운 InputSystem은 다양한 입력 장치와 플랫폼에 대응할 수 있도록 확장되었으며, 기존 InputManager의 문제점들을 해결한다. 새로운 InputSystem을 통해 입력 처리와 게임 로직을 분리하고, 다양한 장치와의 호환성을 극대화할 수 있다.
핵심 개념
- Input Action:
- 입력을 행동(Action)으로 정의하여, 특정 입력을 어떤 행동에 대응시킬지 설정할 수 있음
- 예를 들어, Move, Jump, Shoot 등의 행동을 정의 후, 이를 키보드, 게임패드, 터치스크린 등 다양한 입력 장치에 매핑 가능
- 입력 방식에 따라 게임 로직이 변경되는 것이 아니라, 특정 행동에 따라 게임 로직이 실행되도록 설계하여 유지보수가 용이
- Input Action Asset:
- 여러 개의 Input Action을 Asset 파일로 관리 가능
- 이를 통해 전체 입력 체계를 한곳에서 편리하게 관리하고, 다양한 씬이나 프로젝트에서도 쉽게 재사용 가능
- Player Input Component:
- Player Input 컴포넌트는 입력을 자동으로 처리하고, 메시지나 이벤트로 그 결과를 전달
- 입력과 로직 실행을 분리함으로써 단일 책임 원칙을 지킬 수 있음
장점
- 크로스플랫폼 호환성:
- PC, 모바일, 콘솔 등 다양한 플랫폼에서의 입력을 쉽게 처리 가능
- 플랫폼별로 입력 장치를 구분하지 않고 하나의 액션으로 다양한 입력을 지원할 수 있음
- 리바인딩(Rebinding):
- 유저가 입력 키를 재설정 가능
- 런타임 중에도 입력 키를 변경하거나 새로 매핑할 수 있어, 게임 내에서 유저가 자유롭게 키 설정을 조정 가능
- 멀티플레이어 지원:
- 여러 입력 장치를 동시에 다루는 멀티플레이어 환경에서도 유용하게 사용됨
- 플레이어별로 입력을 구분해 각기 다른 입력 장치를 사용할 수 있음
기존 InputManager와 New InputSystem의 비교표✨
입력 방식 | 하드코딩된 키 값과 입력 방식 | 입력을 액션으로 정의하고, 다양한 장치에 매핑 가능 |
유연성 | 입력 방식을 변경하면 로직도 수정해야 함 | 입력과 로직이 분리되어, 유지보수가 쉬움 |
다양한 장치 지원 | 키보드, 마우스, 게임패드 각각 별도 설정 필요 | 하나의 액션으로 다양한 입력 장치 대응 |
리바인딩 | 없음 | 유저가 직접 입력 키를 재설정 가능 |
멀티플레이어 지원 | 직접 코딩으로 처리해야 함 | 플레이어별로 입력을 구분하여 처리 가능 |
입력 관리 | 각 스크립트에서 개별적으로 관리 | Input Action Asset으로 중앙에서 관리 가능 |
마무리😺
Unity의 새로운 InputSystem은 입력 처리의 유연성과 확장성을 높여준다. 특히 크로스플랫폼 지원, 리바인딩, 멀티플레이어 지원 등 게임 개발 시 필수적인 기능들을 편리하게 제공하여 입력 처리의 복잡성을 크게 줄여준다. 앞으로 다양한 프로젝트에서 InputSystem을 활용하여 입력을 보다 효율적으로 관리하고, 더 나은 게임 플레이 경험을 제공할 수 있도록 해야겠다.
'내일배움캠프' 카테고리의 다른 글
내일배움캠프 19일차 : SOLID 원칙 (0) | 2024.10.10 |
---|---|
내일배움캠프 18일차: 비트연산과 LayerMask를 활용한 충돌처리 (1) | 2024.10.08 |
내일 배움캠프 16일차 : Action , Func 키워드를 사용한 이벤트 사용 (0) | 2024.10.04 |
내일배움캠프 15일차: where,any (0) | 2024.10.02 |
내일배움캠프 14일차: 이벤트 (2) | 2024.10.01 |