
Input System을 이용하는 방법은 크게 4가지가 존재한다.
1. 다이렉트 방식
코드내에서 직접 입력장치를 연결하고, 입력키 까지 설정하는 다이렉트 방식이 있다.
다음과 같은 방식으로 구현할 수 있다.
private Keyboard keyboard;
private void Awake()
{
keyboard = Keyboard.current;
}
private void Update()
{
if (keyboard.aKey.isPressed)
{
}
else if (keyboard.dKey.isPressed)
{
}
else if (keyboard.wKey.isPressed)
{
}
else if(keyboard.sKey.isPressed)
{
}
}
input system에 있는 키보드 클래스에 현재 사용중인 키보드를 할당하고,
그 키보드의 입력 받은 키에 따라 특정 기능을 수행하게 할 수 있다.
isPressed 위치에는 다음과 같은 키워드들이 올 수 있다.
isPressed
는 해당 버튼을 누르고 있는 동안에 true를 반환한다.
wasPressedThisFrame
는 해당 버튼을 누른 그 순간만 true를 반환한다.
예를 들면 이동버튼을 만든다고 했을 때, isPressed를 사용할 경우 꾹 누르기만 해도 이동이 원활하게 되지만,
wasPressedThisFrame을 사용할 경우 꾹 누르면 한번 입력 받은 만큼만 이동하며, 그보다 더 많이 이동하고 싶을 경우 연타를 해야한다.
wasReleasedThisFrame
는 버튼을 누른 것이 끝난 순간에 true값을 반환한다.
이처럼 직접 입력장치를 연결하고, 입력방식도 직접 설정하는 방식을 다이렉트 방식이라고 한다.
2. 임베디드 방식
코드에 다음과 같이 추가할 경우 해당 코드 인스펙터창에 키바인딩을 할 수 있는 창이 생성된다.
[SerializeField] private InputAction _action;



다음과 같이 이용할 수 있다.
public float dir;
public InputAction moveAction;
private void OnEnable()
{
moveAction.performed += PlayerMove;
moveAction.canceled += PlyerStop;
moveAction.Enable();
}
private void OnDisable()
{
moveAction.Disable();
moveAction.performed -= PlayerMove;
moveAction.canceled -= PlyerStop;
}
void PlayerMove(InputAction.CallbackContext value)
{
dir = value.ReadValue<float>();
CallMoveEvent(new Vector2 (dir, 0));
}
void PlyerStop(InputAction.CallbackContext value)
{
dir = 0f;
CallMoveEvent(new Vector2(dir, 0));
}
해당 코드로 A키를 입력하면 dir가 -1이 되고, D키를 입력하면 dir가 +1이 된다.
그 입력은 InputAction.CallbackContext 형태로 입력되며, ReadValue<>를 통해 그 값을 원하는 형태로 받아와야한다.
해당 코드를 사용하면 캐릭터를 좌 우로 움직일 수 있게 되었다.
이처럼 인스펙터 창 안에서 키 바인딩을 하므로, 인베디드 방식이라고 부른다.
3. 액션 애셋 방식

Input Action을 애셋 형태로 만드는 방식이다.
그동안 Input System을 이용할 때 사용한 방식이다.
생성된 애셋에서 액션 맵과 키 바인딩까지 모두 마칠 수 있다.
단, 주의할 점은 값을 받는 방식이다.
public void OnMove(InputValue value)
{
Vector2 moveInput = value.Get<Vector2>().normalized;
CallMoveEvent(moveInput);
}
입력을 원하는 값으로 받기 위해서는 value.Get<Vector2>() 와 같은 방법을 써야한다.
임베디드 방식과 다름을 유의해야한다.
4. C# 클래스 생성 방식

생성한 액션 애셋에서 Generate C# Class를 체크하고 Apply하면 해당 액션 애셋에 맞는 스크립트가 생성된다.

해당 스크립트를 이용해 입력시스템을 구현할 수도 있다.
이처럼 Input System을 이용하는데는 여러 방식이 존재하며, 필요한 방식에 따라 적절하게 이용할 수 있다.
'내일배움캠프 TIL' 카테고리의 다른 글
| 내일배움캠프 25일차 TIL "레이어를 통한 충돌 처리" (0) | 2024.10.18 |
|---|---|
| 내일배움캠프 24일차 TIL "화면 내 좌표 구하기" (0) | 2024.10.17 |
| 내일배움캠프 22일차 TIL "캐릭터를 뒤집는 방법" (0) | 2024.10.15 |
| 내일배움캠프 21일차 TIL "캐릭터의 무기 회전시키기" (0) | 2024.10.14 |
| 내일배움캠프 20일차 TIL "애니메이터와 애니메이션 컨트롤러" (0) | 2024.10.11 |