유니티로 보통의 어플리케이션을 개발할 때에는 PC용이든 모바일용이든 상단의 플레이버튼과 VS의 디버그모드를 이용해서 동작을 확인하곤 했었다.
그러나 이번에는 생각없이 ARCore를 사용한 어플리케이션을 적당선까지 만들고 디버깅을 해보려니 웬걸 PC에는 모바일 카메라가 없었다..
처음에는 땡으로 빌드해서 폰에 넣고 돌렸는데 이 경우 각종 에러코드를 눈으로 확인할 수 없고 언제 어떤 라인을 지나는지, 변수에 값이 들어갔는지 아닌지를 확인하는 것이 너무나도 힘들었다.
그래서 이리저리 검색해보니 google에서 instant preview라는 툴을 제공하고 있었다.
원리를 제대로 확인해보지는 않았지만 adb를 이용해서 모바일의 화면을 넘겨받는 식인것 같다.
실행, 인스톨하는 방법은 대략
1. 데이터 주고받기가 가능한 USB 케이블로 스마트폰과 PC를 연결한다.
2. 스마트폰 개발자 모드에 들어가서 USB 디버깅을 켜고 이런저런 연결을 한다.
3. ARCore 사용을 활성화한 유니티 프로젝트에서 무작정 플레이버튼을 누른다.
이정도 되는데 이러면 알아서 인스톨 루트를 안내해준다.
자세한 부분은 google ARCore의 instant preview 관련 문서에 나와있다.
USB케이블을 이용하지 않고 wifi 접속 등으로 adb를 쓰는 방법도 있는가본데 훨씬 복잡한 것 같아서 필자는 사용하지 않았다.
instant preview를 사용하며 발견한 문제점이 좀 있는데,
1. 우선 한번 tcp port를 써서 adb가 실행되면 해당 프로세스는 하나의 Unity 프로젝트 프로세스에만 연결된다는 점.
컴퓨터를 재시작하면 당연하게도 프로세스가 종료되어 다시 새로운 프로젝트에 instant preview를 사용할 수 있는데 이것이 계속 껐다가 켜기 짜증난다.
이 경우는 유니티 에러로그에 뜨는 adb 포트번호를 기억해두고, 관리자 권한 명령 프롬프트(cmd)로 netstat -ano를 통하여 해당 포트를 사용하는 프로세스의 PID를 확인한 후, 작업관리자 - 세부 정보를 통하여 해당 PID의 프로세스를 꺼 주면 재시작 없이도 다시 이용할 수 있었다.
2. 터치 감지도 되긴 하는데 가운데의 드롭다운 메뉴를 건드리지 않고 시험해야 하는 점이 조금 짜증난다. 터치 영역도 화면 전체를 커버하긴 하지만 위치가 완벽하게 대응되는 느낌은 아니다.
그 외의 사용은 대체로 편하다. adb 프로세스가 살아있으면 usb케이블을 뽑았다가 연결해도 잘 동작할 정도.
혹시나 가로모드로만 실행된다면 모바일의 가로상태에 dependency가 있는 것이 아니라 유니티 프로젝트의 화면 비율 문제이니 그쪽을 바꿔보도록 하자.
구글의 문서에서는 유니티 build setting에서 debug옵션에 체크하라는 안내가 있던데 필자의 경우는 체크를 해제해도 문제없이 작동하였다.
오히려 debug 옵션을 켜고 시험해볼때에는 모바일에 부담이 가는지 카메라 속도나 면 인식 속도가 느려서 대체로 옵션을 끄고 사용했다.
어쨌든 instant preview를 사용한다면 유니티 프로젝트에서 휴대폰의 화면(휴대폰의 카메라가 켜져있는 경우 포함)을 보면서 디버그할 수 있기 때문에 VS에서 유니티의 프로세스를 연결하여 breakpoint를 찍거나 line by line으로 따라가는 것 등등 평소대로 디버깅이 가능해진다.
두서없이 생각나는대로 끄적였는데 조금 더 쓸게 생각나면 수정하도록 해야겠다.