유니티 SDK 설치 후 유니티 에디터에서 WebGL 로 Build And Run 실행시 에러

유니티 에디터에서 빌드 플랫폼을 WebGL 로 변경하고 유니티 SDK ( 앱인토스 유니티 패키지 ) 를 설치했습니다.
이후 에디터에서 AIT > Build 메뉴 눌러서 실행했고 빌드 성공했습니다.
이후 다시 AIT > Dev Server > Start Server 메뉴를 클릭하니
[WebGL 빌드에 실패했습니다.] 라는 파업창이 떴습니다.

그래서 유니티 에디터에서 File > Build Settings > Build 로 직접 WebGL 로 빌드 했습니다. 빌드는 성공했습니다.
이후 다시 File > Build Settings > Build And Run 을 했습니다. 그랬더니 익스플로러에서 실행되더니 이내 에러가 발생했습니다. (아래 스크린샷 참조)

어떻게 해결해야 하나요?
(참고: SDK v 1.5.3 → 1.6.0 으로 업데이트 했는데도 동일한 에러 발생)

내용봐서는 javascript에서 unitInstance 만드는 함수가 누락된거 같네요.

안녕하세요 :slight_smile:
혹시 SDK 최신버전을 이용해서 테스트해봐주실 수 있을까요 ?
이후에도 에러가 난다면, WebGL 빌드에 실패했습니다 창이 떴을 때의 로그를 첨부해주시면 도움을 드릴 수 있을 것 같습니다 :man_bowing:

최신버전으로 해도 똑같은 에러가 뜹니다.
Dev Server > Start Server 로 실행했고요. 에러 팝업창에서 [Issue 신고] 누르면 Your request URL is too long 페이지가 뜹니다. 에러 팝업창 닫히면 아래와 같은 에러가 뜹니다.

참고로, 제가 생각하기로는 webgl 로 빌드후 webgl 폴더에 있는 index.html 파일에서 아래 구문이 문제로 보입니다.

var buildUrl = “Build”;
var loaderUrl = buildUrl + “/%UNITY_WEBGL_LOADER_FILENAME%”;
var config = {
dataUrl: buildUrl + “/%UNITY_WEBGL_DATA_FILENAME%”,
frameworkUrl: buildUrl + “/%UNITY_WEBGL_FRAMEWORK_FILENAME%”,
codeUrl: buildUrl + “/%UNITY_WEBGL_CODE_FILENAME%”,
streamingAssetsUrl: “StreamingAssets”,
companyName: “%UNITY_COMPANY_NAME%”,
productName: “%UNITY_PRODUCT_NAME%”,
productVersion: “%UNITY_PRODUCT_VERSION%”,
showBanner: unityShowBanner,
};

여기서 UNITY_WEBGL_LOADER_FILENAME 이런 변수들이 실제 파일이름으로 치환이 안되어 생기는 문제로 보입니다. 저 부분을 아래처림 실제 파일명으로 변경하면 CreateUnityInstance is not defined 라는 에러는 안나옵니다.

var buildUrl = “Build”;
var loaderUrl = buildUrl + “/694606a045132e74e49b0af1b1e77e48.loader.js”;
var config = {
dataUrl: buildUrl + “/3d1f9034311611ceb1411910dd87c23a.data”,
frameworkUrl: buildUrl + “913c79ec6a92959261b063c8e00f0ed3.framework.js”,
codeUrl: buildUrl + “/7b420371d0c7917099c58586baf3493b.wasm”,
symbolsUrl: buildUrl + “/78cd798b45c931afac2c5c371356ee68.symbols.json”,
streamingAssetsUrl: “StreamingAssets”,
companyName: “%UNITY_COMPANY_NAME%”,
productName: “%UNITY_PRODUCT_NAME%”,
productVersion: “%UNITY_PRODUCT_VERSION%”,
showBanner: unityShowBanner,
};

@uks 님 안녕하세요

수정 완료했습니다. 확인 부탁드립니다 :folded_hands:

Build 는 성공합니다. (SDK 1.6.2)
Build and Run 했을 때 에러가 납니다. 스크린샷을 참조해 주세요.

유니티 에디터 메뉴에서 AIT - Dev Server - Start Server 실행했을 때도 여전히 에러가 발생합니다.

안녕하세요. 먼저 이용에 불편을 드려서 죄송합니다.

혹시 보다 자세한 원인 파악을 위해 아래 사항을 한번 더 확인 부탁드릴 수 있을까요?

캐시 정리 후 재빌드

rm -rf ait-build/
rm -rf webgl/

빌드 윈도우에서 전체 빌드 재실행

Unity 메뉴 Apps in Toss > Build & Deploy Window에서:

  1. :rocket: Build & Package” 버튼 클릭 (단순 패키징이 아닌 전체 빌드)
  2. 빌드 완료 후 ait-build/index.html 파일 열어 플레이스홀더가 실제 값으로 치환되었는지 확인

SDK 버전 확인

최근 커밋 c1078617에서 플레이스홀더 치환 실패 시 빌드를 중단하도록 개선되었습니다. Package manager에서 version 지정 없이 https://github.com/toss/apps-in-toss-unity-sdk.git로 설치하셔서 최신화를 한 후, 위 과정들을 한번 더 시행해주시면 감사하겠습니다.

다시 한번 거듭 이용에 불편 드려 죄송합니다.

감사합니다.

sdk 업데이트 받은 후 말씀하신 대로 실행해 봤습니다. ait-build/index.html 파일 열어 플레이스홀더가 실제 값으로 치환 되었습니다. ait 파일을 등록해서 qr 테스트 해 봤습니다. 에러 메세지 나오더니 곧 사라지고 실행이 됐습니다.
에러 메세지 스크린샷입니다.

그래서 유니티 메뉴에서 AIT → Dev Server → Start Server 를 실행해 봤습니다. 아래처럼 에러가 납니다.

참고로 위 제가 단 댓글 중 Dev Server > Start Server 로 실행했을 때 에러 팝업창 스크린샷 에서 보면 [pnpm] 명령 실패 라는게 나옵니다. 그래서 확인해 보니 pnpm 이 설치가 안되어 있어서 설치를 했습니다. 그래서 pnpm 관련 에러는 안나오는 것 같습니다. pnpm 이 설치되기 전에는 AIT → Package 명령이 실패했었습니다.

보내주신 오류 확인했습니다.

  1. Windows에서 shell execution에서 발생한 stderr에 대한 한글 디코딩 실패도 보여지며
  2. 말씀 주신 pnpm 문제 혹은 다른 문제로 인한 granite 명령어 실패가 보여지네요

핵심 원인을 놓치고 계속 여러번 기다리게 해서 죄송합니다. 개선 패치를 시행하고 다시 말씀드리겠습니다.

감사합니다.

1개의 좋아요

오전에 유니티 SDK 1.7.0 으로 Update 받았습니다. AIT - Dev Server - Start Server 실행하니 컴파일 후 웹브라우저에서 에러가 나오더라고요. 에러 스크린 샷입니다.

이후 AIT - Configuration 에서 고급 설정 - Decompression Fallback 이 비활성화 상태였는데 이를 자동(활성화) 상태로 변경 후 다시 Dev Server - Start Server 를 실행하니 실행이 됐습니다.
실행된 이후에 특정 데이터를 못 불러와서 게임의 특정 텍스트가 제대로 나오지 않아 확인을 위해 로그를 추가하고, AIT - Clean 을 실행했습니다.
그 후 다시 Dev Server - Start Server 를 실행했더니 빌드 실패 팝업 뜨고 확인 버튼 누르니 제가 위 댓글에 쓴 에러 메세지와 비슷한 에러가 다시 나오더군요. 아래는 스크린 샷입니다.

그래서 지금은 다시 Dev Server - Start Server 하면 빌드 실패 팝업 뜹니다.
지금은 계속 SDK 를 수정 중이라 실행이 됐다가 컴파일 에러가 떴다가 불안정한 상태 같습니다.

추가1) AIT - Build 를 실행하면 성공합니다. 그 후 AIT - Package 하면 실패합니다. 패키징 실패 팝업이 뜬 후 확인 버튼 누르면 나오는 에러 메세지가 바로 위의 에러 메세지와 똑같습니다.
참고로 위에 에러 메세지 보면 밑에서 두번째에 [AIT] pnpm install 실패 가 나오는데 pnpm 은 이미 설치가 되어 있습니다.

추가2) AIT - Configuration 에서 [고급설정] - Decompression Fallback 을 비활성화로 설정한 후 AIT - Build 성공, 이후 AIT - Package 성공함.

추가3) 추가2 이후 ait-build 폴더와 webgl 폴더를 삭제한 이후 AIT - Dev Server - Start Server 실행하니 실행이 됨

=> Decompression Fallback 를 ‘자동(활성화)’ 상태에서 실행이 되다가 이번에는 Decompression Fallback 를 ‘비활성화’ 상태에서 실행이 됨. sdk 버전이 같은 상태에서도 됐다 안됐다 하니 뭐가 맞는지 모르겠음.