본문 바로가기
게임 기획/Game Programming

[Unity/유니티] Unity InputSystem 이 안 될 때 해결 방법

by 또리바리 2025. 2. 2.

 

1️⃣ 메서드 이름 대소문자 확인

OnMove() 메서드의 O가 대문자인지 확인

C# 에서는 대소문자를 구분하므로 확인 필수

 

잘못된 예시 (소문자 o 사용)

csharp
void onMove(InputValue value) // 잘못된 메서드
 

올바른 예시 (대문자 O 사용)

csharp
void OnMove(InputValue value) // 올바른 메서드
 

 

 


2️⃣ PlayerInput 컴포넌트가 올바르게 설정되었는지 확인

유니티에서 OnMove()를 호출하려면, PlayerInput 컴포넌트가 필요합니다.

 

✅ PlayerInput이 있는지 확인하고, 없다면 추가!!!

설정 방법

  1. Player 오브젝트를 선택합니다.
  2. PlayerInput 컴포넌트가 있는지 확인
    • 없다면 Add Component를 눌러 추가합니다.
  3. Behavior 옵션이 Send Messages로 되어 있는지 확인
    • OnMove()는 Send Messages 모드에서만 호출
    • 만약 Unity Events 모드라면 수동으로 연결해줘야 함 (C# Events도 마찬가지)
 

 

 

 


3️⃣ PlayerInput에서 "Move" 액션이 올바르게 설정되었는지 확인

Move 액션이 설정되지 않았다면 OnMove()가 호출되지 않음

설정이 꼬였을 가능성이 있으면, .inputactions 파일을 열어 바인딩을 확인하고 저장 후 빌드

 

설정 방법:

  1. PlayerInput → Actions 설정을 확인
  2. Move 액션이 존재하는지 확인
  3. Move 액션의 바인딩이 Vector2 타입인지 확인
  4. 키보드, 게임패드 입력이 제대로 바인딩되어 있는지 확인

 

 

4️⃣ Debug.Log() 추가해서 호출 여부 확인

OnMove()가 호출되는 것이 맞는지 디버그를 통해 확인

csharp
void OnMove(InputValue value) { inputVec = value.Get<Vector2>(); Debug.Log($"[OnMove] Input Vec: {inputVec}"); }
 

유니티 실행 후 콘솔에서 확인

✅ Input Vec: (1.0, 0.0) 같은 값이 나오면 호출되고 있는 것

❌ 만약 아무 로그도 안 나오면 2️⃣ PlayerInput 설정이 잘못된 것

 

 

 

 

 

 

최종 점검 체크리스트

 

✔️ OnMove()의 O가 대문자인지 확인

✔️ PlayerInput 컴포넌트가 추가되어 있는지 확인

✔️ PlayerInput의 Behavior가 "Send Messages"인지 확인

✔️ Move 액션이 Vector2 타입으로 설정되어 있는지 확인

✔️ OnMove() 안에서 Debug.Log()로 호출 여부 확인