상황

현재 위에 첨부한 이미지와 같이 유니티 에디터 상에서 구동시킬때 Game 창이 아닌 Simulator로 변경해서 모바일 환경으로 잡고 플레이 해보고 있는데, 이때에 현재 상황에서 그동안은 개발과정중 입력을 키보드로 잡았었는데, 이제 모바일 환경에서도 구동되도록 터치를 기반으로 동작하도록 하고, 해당 과정을 마우스를 통해서도 에디터 상에서도 확인할 수 있도록 하는 과정을 처리하는 중이었다.
문제점

이때 위에서 유니티의 New Input System 을 이용하는 상황에서, Release 라는 이름의 Action 에서 보여주듯이, 처음에는 Press [Mouse] 형태로 작성해서 Release Only 로 실행했는데, 이렇게 했을시에 지속적으로 마우스 입력을 받아들이지 못하고 아무런 처리가 발생하지 않는 문제가 발생하였다.
해결법

여러가지 시도를 해보던중에, press[Mouse] 가 아닌, press[Pointer] 를 사용하게 되었는데 정상 작동 하는 것을 확인할 수 있었다. 이때에 [Pointer] 의 경우는 아래의 이미지를 통해 알 수 있듯이, 마우스, 터치패드, 펜 등을 모두 아우르는 개념이라는 것을 알 수 있었다.

원인 분석
위와 같이 Simulator 상에서 지속적으로 Mouse로 input system 을 이용해서 입력받기를 시도할때 아무런 반응이 없던 이유를 위와 같이 pointer 라는 개념을 이용해서 해결해보며 알게된 위와 같은 상황에서의 원인은, 내가 simulator 로 게임 플레이 상황을 바꿈으로해서 pc에서의 editor 상황에서 mouse 를 이용한 입력이 터치패드를 이용한 입력으로 인식되기 때문이었다. 그리고 그런 상황에서 [Mouse] 가 아닌 [Pointer] 로 변경하므로써, 3가지 모두 입력받을 수 있는 형태의 Action이 되면서 마우스를 이용한 입력이 Simulator 상에서 touchscreen 을 이용하는 입력으로 받아지면서 정상작동할 수 있게 된 것이다. 실제적으로 Simulator 상황을 없애고 다시 Game 창으로 바꾸어서 pc 상황에서의 플레이 상황으로 설정하고 Action을 받아들일때 [Mouse]를 이용하면 정상적으로 입력을 받아들이는 모습을 볼 수 있었다.
현재 상황에서 사용하는 움직임 스크립트도 유니티의 Input.GetTouch 를 이용하는 형태로 작성되어 있는데, 이것도 만약 Simulator 가 아니라 Game 창으로 바꾸어서 pc 환경에서 게임이 실행되는 형태로 바꾸면 정상적으로 동작하지 않는 상황이 된다.
결론적으로 Simulator 로 놓고 플레이하면 게임모드는 마우스를 통한 입력을 Touch 로 받아들이고, 만약 Simulator 가 아니라 Game 씬으로 두고 플레이하면 마우스를 통한 입력을 Mouse 로 받아들이게 되는 것이다.
매우매우 단순해 보이는 내용이지만 이 내용을 알아내기 위해서 2일정도가 걸린것 같다.
대부분의 마우스를 이용한 입력을 알려주는 예제들은 simulator 상황이 아니라 Game 씬에서 해당 내용에 대해서 알려주는 것들이 많아서 이와 같은 딱 특정된 상황의 예를 찾는일이 쉽지 않아서 검색을 통해서는 정답을 찾을 수 없었고 New Input System 을 이용해서 Pointer 라는 더 상위적인 개념을 사용해보며 현재 상황에서의 원인을 찾아낼 수 있었다.
현재 나와 같은 상황을 맞이한 누군가에게 이 내용이 꼭 도움이 되길 바란다.
'Unity' 카테고리의 다른 글
| 실험을 위해 스크립트 컴포넌트를 다른곳에 여러개 붙여두고 체크박스를 해제해놓았을 때의 문제점과 주의사항. (0) | 2024.02.28 |
|---|---|
| OnCollisionEnter2D() 를 통한 동일 위치에 있는 동일 높이에 있는 물체에 동시 충격시 스크립트 실행 순서에 관한 실험. (0) | 2024.02.19 |
| Enter Play Mode Settings 를 활용한 Play Mode 진입 시간 단축 (0) | 2024.02.16 |
| Time.timeScale =0; 으로 설정시에 AnimatedBtton 클래스의 비정상적인 동작과 이유. (0) | 2024.02.13 |
| Time.timeScale = 0f; 형태로 구현한 일시정지 기능에서의 UI 애니메이터 동작 하지 않는 문제 해결 방법. (0) | 2024.02.10 |
