Unity에서 입력을 처리하는 방식에는 두 가지 주요한 방법이 있습니다. Input Manager와 Input System입니다. 두 시스템 모두 게임에서 플레이어의 입력(키보드, 마우스, 컨트롤러 등)을 처리하기 위한 목적으로 사용되지만, 각기 다른 방식과 장점을 가지고 있습니다.
Input Manager는 Unity의 오래된 입력 처리 시스템으로, 기본적으로 Unity 엔진에 내장되어 있습니다.
단순함
Input Manager는 사용하기 쉽고 설정이 간단합니다. Unity의 프로젝트 설정에서 특정 키 또는 버튼을 직접 설정하고, Input.GetAxis 또는 Input.GetButton 메서드를 사용하여 입력을 처리할 수 있습니다.
고정된 입력 구조: 키보드, 마우스, 게임패드와 같은 입력 장치를 관리할 수 있지만, 입력의 구조가 고정되어 있으며, 복잡한 입력 처리를 설정하는 데 제한적일 수 있습니다.
범용성 부족
다양한 장치를 다룰 수는 있지만, 복잡한 사용자 지정이 어렵고, 특히 멀티플레이어 입력 관리에 한계가 있습니다.
레거시 시스템
Unity의 새로운 Input System과 비교했을 때 기능 면에서 제한적이며, 향후 업데이트에서 지원이 중단될 가능성이 있습니다.
설정
Unity의 "Edit > Project Settings > Input Manager"에서 입력 설정을 구성합니다. 여기서 "Axes"를 통해 특정 입력을 설정할 수 있습니다.
코드에서 사용
// 예시: 키보드 입력
if (Input.GetKeyDown(KeyCode.Space))
{
Debug.Log("Space key was pressed.");
}
// 예시: 게임패드의 축 입력
float horizontal = Input.GetAxis("Horizontal");
float vertical = Input.GetAxis("Vertical");
Input System은 Unity에서 제공하는 새로운 입력 처리 시스템으로, 더 강력하고 유연하며 다양한 플랫폼을 지원하도록 설계되었습니다. 2019년부터 Unity에 도입되었으며, Input Manager의 대체 시스템으로 권장되고 있습니다.
모듈화 및 확장성
다양한 입력 장치를 지원하며, 사용자가 필요에 맞게 입력을 커스터마이즈하고 확장할 수 있습니다. 또한, 멀티플레이어 환경에서 여러 입력 장치를 동시에 처리하는 데 강력합니다.
이벤트 기반 구조
입력 이벤트를 콜백 메서드로 처리할 수 있어, 기존의 폴링 방식보다 효율적이고 반응성이 뛰어납니다.
플랫폼 간 호환성
다양한 입력 장치(키보드, 마우스, 컨트롤러, 터치스크린 등)와 플랫폼(iOS, Android, Windows 등)을 효과적으로 지원합니다.
비주얼 에디터 지원
Unity 에디터에서 Input Actions를 시각적으로 설정할 수 있으며, 사용자가 입력 맵핑을 더 직관적으로 구성할 수 있습니다.
설치
Unity Package Manager에서 "Input System" 패키지를 설치합니다.
설정
설치 후, "Edit > Project Settings > Player"에서 Active Input Handling을 "Input System Package (New)"로 설정합니다.
Input Action Asset 생성
프로젝트 창에서 "Create > Input Actions"를 선택하여 Input Actions Asset을 만듭니다.
코드에서 사용
// 예시: Input System을 통한 입력 처리
using UnityEngine;
using UnityEngine.InputSystem;
public class PlayerController : MonoBehaviour
{
public void OnMove(InputAction.CallbackContext context)
{
Vector2 input = context.ReadValue<Vector2>();
Debug.Log("Move input: " + input);
}
}
Input Action Asset에서 입력 이벤트를 정의하고, 해당 이벤트가 발생할 때 호출할 메서드를 연결할 수 있습니다.