InputSystem Pass Through, Value 차이
https://assetstore.unity.com/packages/essentials/starter-assets-character-controllers-urp-267961
Starter Assets: Character Controllers | URP | Unity 필수에셋 | Unity Asset Store
Get the Starter Assets: Character Controllers | URP package from Unity Technologies and speed up your game development process. Find this & other Unity 필수에셋 options on the Unity Asset Store.
assetstore.unity.com
위의 에셋에서 `InputSystem`을 분석하다가 `Pass Through`가 뭔지 몰라서 실험해본 기록을 남긴다.
보통 키가 눌렸는지 확인하기 위해 `Action Type`으로 `Value`값으로 둔다.
그런데 위의 에셋에서는 `Pass Through`로 설정되어 있었다.
둘이 대체 뭔 차이일까? 검색을 해봤지만 마땅히 시원한 답은 없었다.
튜터님께 질문을 드렸더니 키보드, 게임패드 등 여러가지 입력장치들을 사용하기 때문에 Pass Through가 한 번 걸러주는 역할을 한다고 하셨다.
이게 무슨말인가 싶을텐데, 아래의 실험으로 이해해보자.
실험해보기
말로는 이해가 안되니 직접 실험을 해봤다.
두 가지 실험 모두 똑같은 시나리오대로 진행했다.
1. 마우스 누르기
2. Shift 누르기
3. 마우스 떼기
4. Shift 떼기
실험1 : Value
`Action Type`은 `Value`로 두고, 게임패드가 없으니 키보드와 마우스 입력장치를 사용한다.
public void OnSprint(InputValue value)
{
Debug.Log("눌렀는가");
SprintInput(value.isPressed);
}
디버그창을 보다시피 마우스가 눌린 상태에서 `Shift`를 누르면 `OnSprint`가 실행되지 않는다.
또한, 마우스를 뗐음에도 `Shift`가 눌러져있는 상태여서 Run이 끝나지 않고, `Shift`를 떼야만 비로소 Run이 끝난다.
그럼 `Value`는 결국 입력장치에 상관없이 값만 체크한다는 것이다.
실험2 : Pass Through
`Action Type`은 `Pass Through`로 두고, 키보드와 마우스 입력장치를 사용한다.
디버그창을 보면 마우스가 눌린 상태에서 Shift를 누르면 OnSprint가 실행된다.
또한, 마우스를 먼저 떼고, Shift는 아직 떼지 않았음에도 Run이 끝난다.
결국 `Pass Through`는 모든 입력장치를 받는다는 것이고, 처음으로 눌려지고 뗀 입력장치를 기준으로 체크한다.
결론
입력장치가 여러가지일 때 `Pass Through`를 사용하고, 입력장치가 하나라면 `Value`와 `Pass Through` 어느것이든 사용해도 무방하다.
'스파르타 게임개발종합반(Unity) > TIL - 본캠프 매일 공부 기록' 카테고리의 다른 글
2024.06.05 TIL - MenuItem, 유니티 메뉴창에 툴 구현하기 (2) | 2024.06.05 |
---|---|
2024.06.04 TIL - 디자인 패턴(하) 특강 정리 (0) | 2024.06.04 |
2024.05.31 TIL - Framework 특강 정리 (0) | 2024.05.31 |
2024.05.30 TIL - 객체지향 특강2 정리(SOLID 원칙) (0) | 2024.05.30 |
2024.05.29 TIL - 디자인 패턴(상) 특강 정리 (2) | 2024.05.29 |
댓글