말은 뉴 인풋 시스템이지 사실 이젠 인풋 시스템으로 불리고 실제 PackageManager에서도 Input System으로 명명됐다.

기존 인풋시스템과 구분하기 위해 New가 붙었지만 이젠 이걸 기본으로 봐야 할 것 같지만,

아쉽게도 방금도 얘기 했듯 기본 설정이 아니고 PackgeManager에서 따로 설치해야 한다.

 

문제는 나는 이걸 제대로 사용할 줄을 몰라 항상 헤맨다는 것이다.

이제 헤매는 이유를 알게 됐지만, 같은 실수를 반복하지 않게 여기 정리해 둔다.

 

 

Unity Main Bar > Window > PackageManager를 하여

패키지 매니저를 연다.

 

열린 패키지 매니저에서

Packages:Unity Registry > 검색에서 'Input System' > Install 클릭하여 설치한다.

 

 

설치를 하다 보면, 입력시스템이 바뀌기 때문에 유니티를 한번 껐다 켜야 한다며 확인을 요청하는데 그냥 Yes한다.

 

 

그 후에 사실 설정을 하지 않아도 문제가 되지 않지만 혹시나 입력에 문제가 생길까 확인해 볼 것이 있다.

Unity Main Bar > Edit > Project Settings...를 선택한다.

 

 

Project Settings > Player > Active Input Handling* > Both 로 되어 있으면 된다.

Both는 예전 입력시스템과 새로운 입력시스템을 모두 사용가능하다.

하지만 나는 굳이 Input System Package(New)를 선택할 것이다.

(이 일로 나는 한동안 고민에 빠지게 되는 사건을 만난다. 자세한 이야기는 다음 기회에....)

 

 

유니티에 새로운 인풋 시스템을 설치했으니 다음으로 실제 버튼을 세팅하자

 

 

우선 'ClickTest'라는 이름의 Input Actions를 만들자.

 

Project > 적당한 폴더 > 마우스 우클릭 > Create > Input Actions > ClickTest로 이름변경 한다.

 

Player Input 컴포넌트에서 Create Actions...으로도 생성이 가능한데 이때는 상당 부분 유니티가 자동 생성하기 때문에 필요 없는  기능이 추가되거나 확인해야 할 옵션을 확인하지 못하기 때문에 사용하지 않는다.

 

새로 생성한 ClickTest.inputaction파일을 더블클릭한다.

 

새로운 인풋 시스템을 위한 창이 뜬다.

 

좌측 상단의 No Control Schemes > Add Control Scheme...를 눌러 준다.

 

 

Add Control Scheme > Scheme Name > Mouse로 입력한다.

여기서는 컨트롤러의 종류를 설정한다.

 

 

+ > Mouse > Mouse 를 선택한다. (마우스 오른 클릭으로 하면 편하게 선택이 된다. 필요에 따라 복수개 선택도 가능하다.)

항상 이 부분을 까먹어서 나는 먹통이 됐었다.

 

 

이젠에 List is Empty로 표시되는 곳에 Mouse가 표시된다.

Save!!

No Control Schemes로 표시 되는 곳이 Mouse로 표시된다.

 

 

+ > Mouse 를 입력한다.

이 부분은 게임의 상태(인게임, 아웃게임, UI 등)에서 같은 버튼에 다른 역할을 할당한다.

 

 

Actions항목에서 오른 클릭 > Rename > LeftClick를 한다.

Action Properties는 기본인 Button으로 둔다.

 

 

LeftClick 앞의 접힌 화살표를 펼침 > No Binding 크릭 > Path 클릭

지금 컨트롤러와 맞는지 체크 박스 확인(지금 컨트롤러는 마우스 이므로 Mouse에 체크)

 

 

Mouse > Left Button을 선택한다. (마우스 오른쪽클릭이 편함)

 

 

이렇게 되었다면, 마우스 클릭 입력 세팅 완료.

Save Asset버튼을 클릭하여 수동 저장하던, Auto-Save를 체크해 자동 저장하던 저장하자.

작업된 인풋시스템 창은 닫기보단, 다른 패널 옆에 잘 두자.

 

 

이번엔 스크립트로 자동작 하도록 해보자.

 

어딘가 오브젝트에 붙어서 작동할 ClickTest.cs파일을 생성하자.

카메라가 좋겠으니, 편집하기 전에 카메라에 붙여주자.

 

 

 

잘 붙었으니 스크립트를 열어서 편집해야 하지만, 그전에 컴포넌트 하나를 더 추가하자.

 

 

Player Input 컴포넌트를 추가한다.

이 컴포넌트가 새로운 인풋 시스템 세팅 값과 프로젝트를 연결해서 움직이게 해주는 역할을 한다.

(내 실수의 원흉인 Create Action... 가 보인다.)

Actions항목에 잘 작성한  ClickTest.inputaction을 드래그하여 넣는다.

이제 정말로  ClickTest.cs를 편집하자.

 

using UnityEngine;
using UnityEngine.InputSystem;

public class ClickTest : MonoBehaviour
{
    void OnLeftClick()
    {
        Debug.Log("LeftClick!!");
    }
}

이렇게 입력하고 유니티를 플레이한 후 게임화면을 클릭하면

Condole창에서 클릭이 잘 작동하는 것을 확인할 수 있다.

너무 신나서 클릭을 4번이나 했다. ㅎㅎ

작동 원리는 간단하다

사실 내가 만든 기능이 아니라 간단한 건지는 모르겠다...

내가  ClickTest.inputaction 파일에서 작성한 최종 동작은 LeftClick이라는 Actions인데,

LeftClick앞에 On을 붙여 함수로 작동을 시킬 수 있다.

사용가능한 함수는

 

요기 표시 된다.

 

이제 잘 작동해서 속이 편하다.

'유니티 공부' 카테고리의 다른 글

마우스 클릭과 뉴 인풋 시스템  (1) 2024.06.11

+ Recent posts