- 개요
이전까지는 2개의 스크립트를 사용하여 입력 처리 + 입력에 따른 동작을 모두 수행하였다
위와 같은 방식은 2개의 동작이 하나의 스크립트에서 모두 처리되어 문제를 추적하기 어렵다는 단점이 존재한다
따라서 스크립트의 역할을 분리하여 다음과 같이 재구성한다
- InputManager 스크립트 : 플레이어의 입력을 받아 입력을 처리
- 기존의 2개의 스크립트 : 입력에 따른 동작을 수행
- 스크립트 작업
1) InputManager 스크립트

InputManager의 멤버변수는 위와 같다
- Instance 멤버변수 : 싱글톤 패턴을 사용하여 유일한 인스턴스임을 보장
- Input System 관련 멤버변수
- playerActionMap 멤버변수 + playerInput 멤버변수
- MoveInput 프로퍼티 : W / A / S / D 키를 누르면 설정되는 값
- LookInput 프로퍼티 : 마우스를 회전하면 설정되는 값
- OnJumpPerformed 액션 : 스페이스 바를 눌렀을 경우 연결된 콜백함수를 호출하는 Action
- OnSwapPerformed 액션 : 1 / 2 / 3 키를 눌렀을 경우 연결된 콜백함수를 호출하는 Action

Awake 함수의 로직은 위와 같다
싱글톤 인스턴스를 생성하고 PlayerInput 컴포넌트를 가져온다

OnEnable 함수와 OnDisable 함수의 로직은 위와 같다
PlayerInput 컴포넌트로부터 "Player" 액션 맵을 가져와 활성화 + 비활성화한다

PlayerInput 컴포넌트의 Send Messages 방식에 따라 작성한 콜백 함수는 위와 같다
- OnMove 함수 : Move 액션에 바인드된 키의 입력값에 따라 MoveInput 프로퍼티의 값을 설정
- OnLook 함수 : Look 액션에 바인드된 키의 입력값에 따라 LookInput 프로퍼티의 값을 설정
- OnJump 함수 : Jump 액션에 바인드된 키를 입력되면 OnJumpPerformed 액션 실행
- OnSwap 함수 : Swap 액션에 바인드된 키의 Factor 값을 받아와 OnSwapPerformed 액션 실행
2) PlayerMovement 스크립트

PlayerMovement 스크립트는 더 이상 입력을 처리하지 않으므로 관련 멤버변수를 제거한다

Start 함수 + OnEnable 함수 + OnDisable 함수를 위와 같이 오버라이드하여
InputManager의 OnJumpPerforemd 액션에 콜백함수를 등록 + 등록해제한다

HandleJump 함수의 로직은 위와 같이 구성하여 땅을 딛고 있는지 판단하고 플레이어를 점프시킨다

Update 함수를 위와 같이 수정하여 InputManager의 프로퍼티를 사용하여 플레이어의 방향을 설정한다

FixedUpdate 함수도 수정하여 InputManager의 프로퍼티를 사용하여 플레이어의 이동방향과 회전방향을 설정한다
3) PlayerWeaponChange 스크립트

PlayerWeaponChange 스크립트도 동일하게 입력 처리 관련 멤버변수를 제거한다

Start 함수 + OnEnable 함수 + OnDisable 함수도 위와 같이 오버라이드하여
InputManager의 OnSwapPerformed 액션에 콜백함수를 등록 + 등록해제한다

HandleSwap 함수의 로직은 위와 같이 구성하여 현재 선택한 무기의 gameObject를 활성화하고 리깅을 적용한다
- 최종 실행 결과

'유니티 엔진 - 게임 프로젝트 > Photon을 사용한 멀티 플레이어 게임' 카테고리의 다른 글
| 서버 연결 - 1) Photon PUN의 사용 (0) | 2026.03.09 |
|---|---|
| 프로젝트 세팅 - 최종) 엄지 손가락 리깅 추가 (0) | 2026.03.09 |
| 프로젝트 세팅 - 3) Cinemachine의 사용과 조준 애니메이션 (0) | 2026.03.04 |
| 프로젝트 세팅 - 2) 무기 변경과 리깅 (0) | 2026.02.23 |
| 프로젝트 세팅 - 1) 플레이어의 입력 + 애니메이션 처리 (0) | 2026.02.18 |