유니티 C# 18

유니티 입력 처리 심화 - (13) Action Asset에서의 Index와 Composite

이번 포스트에서는 Action Asset의 요소 중에서 Index와 Composite에 대해 알아보겠습니다.우선, 예제로 사용하는 Action Asset의 구성을 간단하게 훑어보겠습니다.  위와 같은 구성으로 이뤄져 있습니다.여기서 Input Action은 총 5개로,Jump / MoveHorizontal / MoveVertical / Attack / SpecialAttack으로 구성되어 있습니다. 1) Action Asset에서의 IndexIndex는 Action Asset에 속해 있는 각기 다른 Input Action마다 배정되는데처음 들었을 때 상당히 이해하기 힘든 구조로 되어 있습니다.위의 Action Asset에서의 Index를 그림으로 표현하면 다음과 같습니다.  즉, 하나의 Input Act..

유니티 입력 처리 심화 - (12) UI 입력

이번 포스트에서는 새로운 Input System을 사용한 UI 입력을 처리해보도록 하겠습니다.우선, 두개의 버튼을 생성해보도록 하겠습니다.생성하면 다음과 같이 Event System 오브젝트가 자동으로 생성되는 것을 볼 수 있습니다. 1) Event System이란?UI 요소를 생성한 후에 자동으로 생성되는 EventSystem은 입력과 UI 요소를 연결해주는 오브젝트입니다.생성된 EventSystem에서 기본적으로 총 3개의 컴포넌트가 있는데,각각 Transform, Event System, 그리고 Input System UI Input Module입니다. 이중에서 Input System UI Input Module에서새로운 Input System을 사용하게끔 설정하면 기본적인 Action Asset을..

유니티 입력 처리 심화 - (11) Player Input 컴포넌트 - Invoke C# Events

이번 포스트에서는 Unity의 PlayerInput 컴포넌트를 사용하여Input System을 사용하는 4가지 방법 중에서 4번째인 Invoke C# Events를 알아보겠습니다. 이전의 포스트와 동일하게 옵션을 Invoke C# Events로 변경하도록 하겠습니다.변경하면 설정 창이 다음과 같이 변경되는 것을 볼 수 있습니다. Invoke C# Event와 Invoke Unity Event 방식의 가장 큰 차이점은 입력을 통해 호출하는 콜백 함수를 C# 스크립트에서 연결하느냐 유니티 에디터에서 연결하느냐입니다. 이제 Invoke C# Event의 사용 방법을 예제를 통해 알아보겠습니다.1) Invoke C# Events 사용예제public class InvokeCSharpEvents : MonoBeha..

유니티 입력 처리 심화 - (10) Player Input 컴포넌트 - Invoke Unity Events

이번 포스트에서는 Unity의 PlayerInput 컴포넌트를 사용하여Input System을 사용하는 4가지 방법 중에서 3번째인 Invoke Unity Events를 알아보겠습니다. 기존의 프로젝트에서 사용하던 옵션을 Invoke Unity Events로 변경하도록 하겠습니다.변경하면 기본적으로 다음과 같이 나타나는 것을 볼 수 있습니다. 이런 상황에서 현재 사용중인 Action Asset에서 기본적으로 사용하는 Action Map이InGround이므로, InGround 패널을 열어보겠습니다. 이 경우에 Action Map에 정의된 Input Action들도 나타나는 것을 볼 수 있습니다.정리하자면 다음과 같이 정리할 수 있습니다.- Invoke Unity Events에 관련한 간단한 정리Invoke..

유니티 입력 처리 심화 - (9) Player Input 컴포넌트 - Broadcast Messages

이번 포스트에서는 Player Input 컴포넌트를 통해 Input System을 사용하는 4가지 방법 중에서두번째인 Broadcast Messages를 알아보겠습니다. Broadcast Messages의 경우, 동작하는 방식이 Send Message와는 크게 차이가 없지만수행하는 콜백 함수가 Player Input 컴포넌트를 가진 오브젝트가 아닌Player Input 컴포넌트를 가진 오브젝트의 자식 오브젝트의 것이라는 차이가 있습니다. 즉, 정리하자면 Broadcast Messages 방식은자식 오브젝트의 함수를 호출하는 것에서 Send Messages와 큰 차이가 존재합니다. 이제 예제를 통해 사용하는 방법을 알아 보도록 하겠습니다. 1) PlayerInput 컴포넌트 - Broadcast Messa..

유니티 입력 처리 심화 - (8) Player Input 컴포넌트 - Send Messages

이번 포스트에서는 Player Input 컴포넌트를 통해 Input System을 사용하는 4가지 방법 중에서첫번째로 Send Messages를 알아보겠습니다. Player Input 컴포넌트를 추가한 후에,Behavior 항목에서 Send Messages로 설정하였습니다.  위와 같이 설정한 Input Action Asset - Action Map 아래의 기본적인 Input Action들 외에도추가적으로 만든 Input Action들이 보이는 것을 확인할 수 있습니다. Send Messages 방식은 다음과 같이 동작합니다.입력 이벤트에 따라 호출할 함수의 이름 규약은 On + Input Action명으로 지어집니다.이때, 내부적으로 GameObject.SendMessages 메서드를 통해PlayerI..

유니티 입력 처리 심화 - (7) Player Input 컴포넌트를 통한 입력 처리

이번 포스트에서는 유니티에서의 입력을 처리하는 4가지 단계 중에서 마지막 단계인Player Input 컴포넌트를 사용하여 입력을 설정하는 방법을 알아보겠습니다.Player Input 컴포넌트는 다음과 같이 동작합니다.  Player Input 컴포넌트를 이용한 입력 처리 방법은 기존에 사용하던 키 대신, 다른 키와 입력 함수를 연결하는 리바인딩(Rebinding)이 가능하므로상업적인 게임에서 사용하기 매우 적합합니다. 우선, Player Input 컴포넌트를 오브젝트에 추가해보겠습니다.여기서 추가되는 하나의 Player Input 컴포넌트는 플레이어 한 명을 의미합니다.추가한 Player Input 컴포넌트는 다음과 같이 구성되어 있습니다.  1) Player Input 컴포넌트의 구성우선적으로 사용할 ..

유니티 입력 처리 심화 - (6) Action에 대한 추가적인 정보

이번 포스트에서는 이전에 알아본 Action의 Interaction과 Processor 외에도,Action에 대한 추가적인 정보를 한번 다뤄보겠습니다.Interaction이나 Processor 만큼 무거운 내용이 아니니 가볍게 알아보겠습니다.  1) Started VS PerformInput System에서 입력을 하는 경우에 함수를 호출하는 것은 2가지 방식으로 분리가 가능합니다.바로 started와 performed로 구분할 수 있습니다. 이 둘을 구분하는 기준이 바로 Interaction입니다.둘은 다음을 기준으로 진행합니다.Started : Action에 연결된 키를 누르는 경우 진행Performed : Action에 연결된 모든 Interaction이 완료되는 경우 진행따라서 Started 이후..

유니티 입력 처리 심화 - (5) Action의 Processor

Action에 사용하는 Interaction 말고 이번 포스트에서는 Processor에 대해 알아보겠습니다.Interaction이 입력키가 동작하는 방식을 설정한다면,Processor는 입력 값을 변경하는 용도로 사용합니다. Interaction과 Processor는 Input에 개별적으로 바인드될 수 있는데,따라서 원하는 Action에만 특정한 Interaction이나 Processor가 동작하도록 설정할 수 있습니다. Processor는 Action의 타입인 Control Type에 의존적입니다.따라서 Any 타입의 경우 어떠한 Processors든 사용할 수 있으므로 특히 주의해야 합니다. 그리고 특히 중요한 것은 Processor는 중복 사용이 가능하다는 것입니다.이때 위에서 아래의 순서대로 적용..

유니티 입력 처리 심화 - (4) Action의 Interaction

이번 포스트에서는 유니티의 새로운 입력 시스템인 Input System의Action에 설정가능한 Interaction에 대해 알아보겠습니다. Interaction은 입력 시에 Input Event(=콜백함수)를 수행하기 전까지의 설정을 의미합니다.Interaction은 Aciton의 다음 옵션에서 설정할 수 있습니다.  Interaction의 경우 총 5개의 설정값이 존재합니다. 이번 포스트에서는 이 5개의 설정값들에 대해 한번 알아보겠습니다. 1) Hold Hold에서는 Hold Time을 설정하면,키를 입력하고 설정한 Hold Time 이후에 Action에 연결된 이벤트 함수를 호출합니다.Hold Time을 2초로 설정한 뒤에 Save Asset을 하여 저장하였습니다. 이후 실행결과를 보겠습니다.  ..