스파르타 게임개발종합반(Unity)/TIL - 본캠프 매일 공부 기록

2024.06.03 TIL - InputSystem Pass Through, Value 차이

테크러너 2024. 6. 3.

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` 어느것이든 사용해도 무방하다.

 

반응형

댓글