Unity의 새로운 입력 시스템 개요

Unity의 새로운 입력 시스템은 게임 내 입력 처리에 대한 업데이트되고 유연하며 보다 직관적인 접근 방식을 제공합니다. 이 시스템을 통해 개발자는 게임 컨트롤러에서 VR 핸드셋에 이르기까지 다양한 장치를 지원하여 게임 플레이를 더욱 역동적이고 몰입감 있게 만들 수 있습니다.

1. 새로운 시스템이 필요한 이유

Unity의 기존 입력 시스템은 기능이 제한되어 있으며 확장성이 없습니다. 새 입력 시스템는 통합 API를 제공하여 이전 제한 사항을 해결하고 최신 게임 개발을 위한 고급 기능을 제공합니다.

2. 설정

새 입력 시스템 사용을 시작하려면 먼저 Unity의 패키지 관리자에서 설치해야 합니다. 추가한 후 기존 시스템에서 전환하려면 스크립트 및 설정에서 특정 조정이 필요합니다.

3. 주요 특징들

  • 작업 및 바인딩: 개발자는 버튼이나 키를 직접 참조하는 대신 작업을 정의한 다음 해당 작업을 특정 키나 버튼에 바인딩합니다.
  • 장치 다양성: 기존 게임 패드부터 터치스크린 및 VR 핸드셋에 이르기까지 다양한 장치를 쉽게 지원합니다.
  • 플레이어 컨트롤: 컨트롤을 다시 바인딩하기 위한 내장 메커니즘을 제공하여 플레이어가 원하는 대로 컨트롤을 설정할 수 있습니다.
  • 고급 이벤트 처리:이벤트는 폴링 기반이든 콜백 기반이든 다양한 방식으로 처리될 수 있으므로 더 많은 제어가 가능합니다.

4. 입력 작업 만들기

입력 작업은 스크립트를 작성하지 않고도 입력 동작을 정의할 수 있는 새로운 자산 유형입니다. 일단 생성되면 스크립트에 삽입하여 게임플레이를 플레이어 입력에 직접 연결할 수 있습니다.

5. 스크립팅 구현

  • 새로운 입력 시스템은 Unity 스크립팅 환경과 완벽하게 통합됩니다. 이전 'Input.GetKey' 또는 'Input.GetAxis' 방법 대신 이 시스템은 스크립트 내에서 호출할 수 있는 '작업'을 사용합니다. 아래 예를 확인하세요.
using UnityEngine;
using UnityEngine.InputSystem;
public class PlayerMovement : MonoBehaviour
{
    public float speed = 5.0f;
    private Vector2 moveInput;

    public void OnMove(InputAction.CallbackContext context)
    {
        moveInput = context.ReadValue<Vector2>();
    }

    void Update()
    {
        Vector3 move = new Vector3(moveInput.x, 0, moveInput.y) * speed * Time.deltaTime;
        transform.Translate(move);
    }
}

위에 제공된 코드 예제를 분석해 보겠습니다.

  • 네임스페이스: 'UnityEngine.InputSystem' 네임스페이스는 새로운 기능을 사용하는 데 필수적입니다.
  • 'moveInput': 이 변수는 일반적으로 수평 및 수직 입력을 나타내는 입력 값을 저장합니다.
  • 'OnMove()': 공개 함수로 정의된 'OnMove'는 Unity 편집기의 입력 작업에 직접 연결될 수 있습니다. 이 방법은 'InputAction.CallbackContext'를 활용하여 입력 값을 읽고 이를 'moveInput' 변수에 할당합니다.
  • 'Update()': 'Update' 방식에서는 저장된 입력값에 따라 이동 방향이 결정됩니다. 입력은 정의된 속도와 프레임 독립적 이동을 위한 Unity 'Time.deltaTime'를 고려하여 캐릭터 이동을 위한 3D 벡터로 변환됩니다.

이 스크립트가 작동하도록 하려면 Unity 편집기를 통해 'OnMove' 메서드를 입력 작업에 연결하는 것이 중요합니다. 이 연결을 통해 플레이어가 입력을 제공할 때(예: 조이스틱 이동 또는 화살표 키 누르기) 해당 작업이 원하는 스크립트 함수를 트리거합니다.

결론

Unity의 새로운 입력 시스템은 현대 게임 개발의 요구 사항에 맞춰 강력하고 꼭 필요한 진화입니다. 다양성, 정확성 및 사용자 맞춤화를 제공하여 게임 상호작용을 더욱 매력적이고 반응적으로 만듭니다.