
프로젝트 진행 중 ‘You are trying to read Input using the UnityEngine.Input class‘라는 에러가 발생하는 경우가 있습니다.
해당 에러의 발생 이유와 해결 방법에 대해서 정리해보았습니다.
1. 에러 발생 이유
이 에러는 주로 Input System Package(새로운 입력 시스템)가 설치된 환경에서, 기존 방식의 코드 (Input.GetKey 등)를 사용했을 때 발생합니다.
즉, 에디터는 ‘Input System Package’를 사용하기로 했는데 코드에서는 ‘Input Manager’를 활용한 코드 (Input.GetKeyDown, Input.GetAxis 등)가 사용되었기 때문입니다.
2. 해결 방법

[Project Settings] -> [Player] -> [Other Settings] -> [Active Input Handling] -> Both(권장) 또는 Old
설정 완료 후 적용버튼(Apply) 클릭 시 유니티가 재시작 되며 설정값이 변합니다.
3. Old vs New
기능
Input Manager를 사용한 코드는 구 버전 사용자에게 익숙하고, 코드의 가독성이 더 높게 느껴질 수 있습니다.
다만 ‘키 바인딩‘, ‘멀티 플랫폼 조작 최적화‘ 등 Input Manager로 기능을 개발하기 번거로운 입력 로직을 신 버전 즉 Input System Package를 사용하면 더 쉽게 개발할 수 있습니다.
최적화
기존 Input Manager는 엔진 코어(C++)에서 직접 처리되어 매우 가벼운 반면, New Input System은 C# 기반의 레이어와 다양한 기능을 거치기 때문에 메모리 할당과 CPU 연산 비용이 상대적으로 더 높습니다.
하지만, 최신 기기에서는 체감하기 어려운 수준이며, 키 바인딩과 멀티 플랫폼 대응의 편의성이라는 장점이 성능 비용보다 훨씬 크기 때문에 프로젝트 성격에 맞춰 선택하는 것이 좋습니다.
결론
Input Manager, New Input System 중 본인의 프로젝트에 맞는 입력 시스템을 골라서 사용하시면 됩니다.



