Input Action을 사용하는 이유
유연한 입력 관리
- 다양한 입력 장치(키보드, 마우스, 게임패드, 터치 등)를 손쉽게 지원합니다.
- 하나의 액션을 여러 입력 방식에 매핑할 수 있어, 플레이어가 편리하게 다양한 장치를 사용할 수 있습니다.
쉽고 직관적인 설정
- 인스펙터에서 시각적으로 입력을 설정할 수 있어, 스크립트로 복잡하게 작성할 필요 없이 직관적으로 입력을 구성할 수 있습니다.
- 입력 액션을 변경하거나 추가하는 과정이 간단합니다.
재사용 가능성
- 게임 내 여러 개체에서 동일한 입력 액션을 사용할 수 있어, 코드의 중복을 줄이고 유지보수를 용이하게 합니다.
- 하나의 입력 액션 맵을 여러 상황에서 재사용할 수 있습니다.
반응성 및 성능
- 이벤트 기반 구조로 되어 있어, 폴링 방식보다 성능이 우수하고 반응성이 좋습니다.
- 입력 이벤트가 발생할 때만 처리되므로, 불필요한 리소스 소모를 줄일 수 있습니다.
테스트 용이성
- 시뮬레이션 모드 및 다양한 디버그 툴을 제공하여 입력 테스트를 용이하게 할 수 있습니다.
1. Input System 패키지 설치
먼저, 새로운 Input System을 사용하려면 패키지를 설치해야 합니다.
유니티 에디터 상단 메뉴에서 Window > Package Manager를 선택한 후, Input System 패키지를 검색하여 설치합니다.
2. Input System 활성화
패키지를 설치 했으면, 새로운 Input System을 활성화해야 합니다.
유니티 에디터 상단 메뉴에서 Edit > Project Settings를 선택한 후, Player 섹션의 Other Settings에서 Active Input Handling을 Both로 설정합니다.
이 설정은 기존의 Input Manager와 새로운 Input System을 동시에 사용할 수 있게 해줍니다.
3. Input Action Asset 생성
이제 Input Action을 설정할 차례입니다.
프로젝트 창에서 우클릭하여 Create > Input Actions를 선택하여 새로운 Input Action Asset을 생성합니다.
4. Input Action 설정
PlayerInput Asset을 더블클릭하여 열면, Input Action 설정 창이 나타납니다.
여기에서 새로운 Action Map을 추가하고, 각각의 입력에 대한 Action을 설정할 수 있습니다.
Actions + 버튼을 눌러서 생성해줍니다.
생성을 했으면 이름을 입력하고 Action Properies에서
Action Type은 Value로 Control Type은 Vector2 로 설정해줍니다.
그 다음에 생성한 Action에 + 버튼을 눌러 두번째 클릭합니다.
그러면 바인딩 할 키들이 나오는데,
Path는 사용할 키들을 넣어줍니다.
5. 스크립트에서 Input Action 사용
우선 방금까지 만들던 Input Action을 눌러서,
Apply를 눌러 스크립트를 생성됩니다.
using UnityEngine;
using UnityEngine.InputSystem;
public class CharacterInput : MonoBehaviour
{
private PlayerInputAction inputAction;
private Vector2 moveInput;
void Awake()
{
inputAction = new PlayerInputAction();
inputAction.Player.Move.started += OnMove;
inputAction.Player.Move.performed += OnMove;
inputAction.Player.Move.canceled += OnMove;
}
void OnEnable()
{
inputAction.Player.Enable();
}
void OnDisable()
{
inputAction.Player.Disable();
}
void FixedUpdate()
{
transform.Translate(moveInput * Time.fixedDeltaTime * 10f);
}
private void OnMove(InputAction.CallbackContext context)
{
moveInput = context.ReadValue<Vector2>();
}
}
6. Input Action 적용 및 테스트
유니티 에디터에서 플레이 모드로 전환하여 입력이 제대로 작동하는지 테스트합니다.
'Unity' 카테고리의 다른 글
MacOS VS Code 컴퓨터에 설치된 NET SDK가 없습니다 해결 방법 (0) | 2024.06.07 |
---|---|
Unity Script Template 수정하기 (0) | 2024.06.04 |
Unity foreach에서 index 사용하는 방법 (0) | 2024.05.03 |
Unity toString() 숫자 표기하기 소수점, 두자리수, 콤마 (0) | 2024.04.18 |
Unity Singleton Pattern (0) | 2024.04.02 |