- 개요
기존의 입력 시스템에서는 플레이어마다 InputManager가 생성되어 입력을 처리하였다
또, 입력에 따른 Action별로 클래스가 존재하여 각각의 클래스 내에서 콜백함수를 바인드하였다
위와 같은 시스템은 클래스를 기능별로 분리하지 못하고
플레이어가 생성될 때마다 InputManager를 생성해야 한다는 문제가 존재한다
따라서 다음과 같이 입력 시스템을 개선한다
- InputManager 클래스 : 플레이어가 아닌, 게임에 하나만 존재 + 플레이어의 입력에 따른 값을 전달
- PlayerController 클래스 : 플레이어마다 존재 + 전달된 값을 처리
- Action별 클래스 : Action에 따라 수행해야 하는 동작만 정의
- 스크립트 작업
1) PlayerInput 컴포넌트 수정

Behavior를 Invoke C# Events로 변경하여 입력하여 호출하는 콜백함수를 C# 스크립트에서 연결한다
2) InputManager 클래스

InputManager 클래스의 멤버변수는 위와 같다
- Instance 멤버변수 : 게임 내에서 유일한 객체
- MoveInput 멤버변수 : Move 액션에 연결된 입력 값
- LookInput 멤버변수 : Look 액션에 연결된 입력 값
- OnJumpPerforemd 액션 : Jump 액션에 연결된 키를 입력하면 실행하는 Action
- OnSwapPerforemd 액션 : Swap 액션에 연결된 키를 입력하면 실행하는 Action

Awake 함수를 위와 같이 오버라이드하여
InputManager의 유일한 객체를 생성하고 씬이 전환되어도 파괴되지 않도록 설정한다

BindPlayerInput 함수를 추가한다
해당 함수를 호출하여 PlayerInput에서 참조중인 Action 별로 입력값과 Action의 실행을 연결한다
3) PlayerController 클래스

PlayerController 클래스의 멤버변수는 위와 같다
- playerInput 멤버변수 : 현재 플레이어가 갖고있는 PlayerInput 컴포넌트
- movement 멤버변수 : Move 액션에 따른 동작을 수행하기 위한 PlayerMovement
- weaponChange 멤버변수 : Swap 액션에 따른 동작을 수행하기 위한 PlayerWeaponChange

Awake 함수와 Start 함수를 각각 위와 같이 오버라이드한다
- Awake 함수 : 멤버변수의 값을 설정
- Start 함수 : InputManager 객체의 BindPlayerInput 함수를 호출하여 Action 연결

OnEnable 함수와 OnDisable 함수를 위와 같이 오버라이드한다
- OnEnable 함수 : InputManager의 Action에 필요한 콜백함수를 바인드
- OnDisable 함수 : InputManager의 Action에 바인드된 콜백함수를 바인드해제

Update 함수와 FixedUpdate 함수를 위와 같이 오버라이드한다
- Update 함수 : InputManager로부터 전달된 값을 처리하고 Action별 클래스의 함수에 인자로 전달
- 물리 효과와 연관되어 있지 않은 로직 처리
- FixedUpdate 함수 : InputManager로부터 전달된 값을 처리하고 Action별 클래스의 함수에 인자로 전달
- 물리 효과와 연관된 로직 처리
4) PlayerMovement 클래스

InputManager의 Action에 콜백함수를 바인드하던 OnEnable 함수와 OnDisable 함수를 제거하고
PlayerController에서 호출하는 함수들의 접근제어를 public으로 변경한다
5) PlayerWeaponChange 클래스

동일하게 OnEnable 함수와 OnDisable 함수를 제거하고
PlayerController에서 호출하는 함수들의 접근제어를 public으로 변경한다
- 최종 실행 결과

'유니티 엔진 - 게임 프로젝트 > Photon을 사용한 멀티 플레이어 게임' 카테고리의 다른 글
| 서버 연결 - 개선) 입력 시스템 2차 개선 (0) | 2026.03.11 |
|---|---|
| 서버 연결 - 2) Room 입장 + 플레이어 분리 (0) | 2026.03.10 |
| 서버 연결 - 1) Photon PUN의 사용 (0) | 2026.03.09 |
| 프로젝트 세팅 - 최종) 엄지 손가락 리깅 추가 (0) | 2026.03.09 |
| 프로젝트 세팅 - 3) Cinemachine의 사용과 조준 애니메이션 (0) | 2026.03.04 |