유니티/유니티 C#

유니티 입력 처리 심화 - (3) Action Asset 방식_01

monstro 2024. 12. 24. 01:26
728x90
반응형

지난 포스트에서는 임베디드 방식을 통해 입력을 처리하는 방식을 배워보았습니다.

임베디드 방식의 경우, 입력 장치에서 받아온 값을 바로 C# 스크립트로 처리할 수 있어

구현이 간단하고 편리하지만, 게임의 규모가 커질 수록

입력을 다양한 방법으로 처리하지 못한다는 단점이 있습니다.

 

이번 포스트에서는 기존의 간단한 게임에서의 입력 처리 방식이 아닌

규모가 있는 게임에서의 입력 처리 방식 중 하나인 Action Asset을 통한 입력 처리를 알아보겠습니다.

 

1) Action Asset

 

Action Asset은 위와 같이 동작하게 됩니다.

정확히 말하면, Action Asset이라는 입력을 처리하는 명세서를 만들고

해당 명세서에서 입력 동작 방식 + 입력 처리 방법 + 입력 반환 값등을 규정할 수 있습니다.

 

2) Action Asset의 구성

Action Asset의 경우, 유니티 에디터에서 우클릭 Create - Input Actions로 생성할 수 있습니다.

생성된 Action Asset을 보면 다음과 같이 구성되어 있는 것을 볼 수 있습니다.

 

Action Map과 Actions가 보이는데,

Action Asset의 단계에서는 입력을 다음과 같이 정의할 수 있습니다.

 

  1. Action Asset : 모든 Action Map을 하나로 모아 관리하는 주체
  2. Action Map : 특정 Actions들을 하나로 모아 관리하는 주체
  3. Actions : 특정 입력에 대해 수행하는 동작

 

즉, 시각적으로 표현하면 다음과 같이 나타낼 수 있습니다.

 

3) Action Asset의 사용

Action Asset을 사용하는 경우런타임 시점에특정 Action Map을 활성화/비활성화할 수 있습니다.

즉, 플레이어가 육상에 있다면 육상에 맞는 Action Map을 사용하도록 할 수 있고,

플레이어가 바다에 있다면 수중에 맞는 Action Map을 사용하도록 할 수 있습니다.

 

 

Actions의 경우 총 3개의 Action Type을 설정할 수 있습니다.

구성은 다음과 같습니다.

 

1) Value의 경우, 입력시수행하는 Action이 값을 리턴합니다.

리턴되는 값에 상황에 맞는 자료형을 수식하여 사용할 수 있습니다.

 

2) Button의 경우, 입력이 true 또는 false의 값만을 갖게 됩니다.

복잡한 동작을 수행하지 않고 오로지 실행 여부만을 판단하는 경우 사용가능합니다.

 

3) 마지막 Pass Through의 경우, UI 입력에 주로 사용합니다.

Value와 같이 상황에 맞는 자료형을 수식하여 사용이 가능합니다.

 

만약, Action Type을 Value 또는 Pass Through로 설정하는 경우에

자료형의 수식은 다음과 같이 진행할 수 있습니다.

 

이때 Any를 사용하면 모든 자료형을 수식할 수 있으며  어떤 형태의 값이든 사용이 가능합니다.

 

4) Control Scheme

마지막으로 Control Scheme에 대해 알아보겠습니다.

Control Scheme은 액션에 연동된 Value를 초기화하거나

다른 입력장치에 해당 Action Map을 묶는 경우에 사용합니다.

 

 

Action Asset의 좌측 상단의 Add Control Scheme을 통해 생성할 수 있습니다.

 

 

위와 같이 Control Scheme에 연결할 입력장치를 설정해줄 수 있습니다.

일단 2개의 ControlScheme을 생성해보았습니다.

둘 다 키보드를 연결하겠습니다.

 

생성된 Control Scheme은 다음과 같이 Action에 설정하여 

설정된 Action은 해당 Control Scheme과 연결됩니다.

 

 

 

생성한 Control Schemes에서 관리할 Action들을 선택하여 연결한 것을 위와 같이 확인할 수 있습니다.
Control Scheme은 연결된 Action들을 정리하거나 연결된 값을 초기화하는데 매우 유용하게 사용할 수 있습니다.

 

마지막으로 Action Asset을 다루는 경우 가장 중요한 점을 하나 말씀드리겠습니다.

Action Asset에 어떠한 형태로든 변형을 가한 경우 반드시,

 

상단의 Save Asset을 꼭 실행시켜줘야 합니다.

이것이 귀찮다면 바로 옆의 Auto Save를 활성화하는 것도 방법입니다. 

 

다음에 이어지는 포스트에서는 본격적으로 Action Asset을 C# 스크립트로 사용하는 방법에 대해 알아보겠습니다.

728x90
반응형