Cheondi
개발 · 웹

Unity 하나인데 WebGL과 Android 빌드는 왜 이렇게 다를까

Unity에서 잘 되던 기능을 WebGL과 Android로 옮기며 플랫폼마다 다른 환경을 배운 기록입니다.

  • #unity
  • #webgl
  • #android

Unity 에디터에서 기능이 잘 돌아가는 걸 확인하고 나면 빌드도 비슷하게 동작할 거라고 생각했다. 같은 코드이고 같은 화면이니 크게 다를 이유가 없다고 봤다. WebGL과 Android 빌드를 만지기 전까지는 그랬다. 처음에는 에디터에서 되는데 빌드에서 안 되는 상황 자체가 잘 이해되지 않았다.

WebGL에서는 저장한 값이 새로고침 뒤에 예상과 다르게 남거나, 브라우저와 Unity 사이에서 값을 주고받는 시점이 맞지 않는 문제가 있었다. Unity 안의 파일처럼 생각했던 저장 공간이 브라우저에서는 다른 규칙으로 움직였다. C# 코드만 찾다가 브라우저 쪽에서 Unity를 연결해 주는 부분까지 따라가야 한다는 걸 알고 나서야 조금 감이 왔다.

Android는 또 다른 느낌이었다. 코드 문제라고 생각하고 한참 들여다봤는데 실제로는 빌드에 필요한 도구의 버전이나 설정이 맞지 않은 경우도 있었다. 패키지를 넣는 순서가 달라 결과가 바뀌기도 했고, 에디터에서는 보이지 않던 오류가 기기에서만 나타나기도 했다. 하나를 해결하면 다른 오류가 나오는 날에는 정말 어디까지 봐야 하나 싶었다.

처음에는 플랫폼별 예외가 계속 늘어나는 것처럼 보여 답답했다. 그런데 문제를 나눠 보니 확인할 곳이 달랐다. Unity 코드의 문제인지, WebGL에서 브라우저와 연결되는 부분인지, Android 빌드 환경의 문제인지부터 구분하면 헤매는 시간이 줄었다. 같은 기능이라도 실행되는 장소가 바뀌면 저장 방식과 사용할 수 있는 기능, 준비 과정도 달라진다는 걸 받아들이게 됐다.

이후에는 에디터에서 성공한 것을 완료라고 생각하지 않게 됐다. 목표 플랫폼으로 직접 빌드하고, 저장과 다시 불러오기처럼 환경 영향을 받는 기능은 따로 확인한다. 아직 플랫폼마다 모르는 것이 많지만, 적어도 “같은 Unity니까 같겠지”라는 생각에서 한 걸음 벗어난 시기였다.