【Unity】Unity 2020 WebGL 빌드에서 jslib에서 에러가 발생하게 된 경우의 메모
소개
Unity에서는 WebGL 용 빌드에서 브라우저와 함께 작동하도록 JavaScript 플러그인을 만들 수 있습니다.
Unity 2019에서 WebGL에서 파일 대화 상자를 처리하는 프로젝트가 있었지만,
요 전날 Unity 2020으로 업데이트하고 빌드했는데 브라우저(Google Chrome)에서 다음과 같은 오류가 발생했습니다.
이번에는 그 대처에 대해 공유하려고합니다.
※JavaScript 에 대해 자세하지 않기 때문에, 실수등 있을지도 모릅니다만 양해 바랍니다.
TypeError: Cannot read property 'addEventListener' of null at [関数名]
버전
Unity 2020.3.13f1
전제
WebGL에서 파일 대화 상자를 처리하는 방법으로 다음 기사의 FileImporter.jslib
참고로 하고 있었습니다.
Unity의 WebGL 출력에서 HTML 파일 선택 대화 상자를 표시하여 외부 파일 로드
오류 내용 및 원인
TypeError: Cannot read property 'addEventListener' of null at [関数名]
FileImporter.jslib 안에서 addEventListener 를 사용하고 있는 것은 한 곳, document.getElementById('#canvas') 뒤만입니다.
아무래도 ID: #canvas 로 Canvas 를 얻을 수 없게 된 것 같습니다…
아마도 Unity 2020부터 WebGL 빌드 파일의 출력 형식이 변경되었을 수 있습니다.
빌드 출력의 index.html을 들여다 보면,
그래서 #canvas가 아니라 unity-canvas라는 ID가 부여되게 된 것 같습니다.
또한 조금 아래로
에서 미리 취득해 주고 있으므로, getElementById 를 사용하지 않아도 변수 canvas 로서 직접 액세스 할 수 있을 것 같습니다.
대처
따라서 FileImporter.jslib의 두 위치
document.getElementById('#canvas').removeEventListener('click', OpenFileDialog);
document.getElementById('#canvas').addEventListener('click', OpenFileDialog, false);
,
document.getElementById('unity-canvas').removeEventListener('click', OpenFileDialog);
document.getElementById('unity-canvas').addEventListener('click', OpenFileDialog, false);
또는,
canvas.removeEventListener('click', OpenFileDialog);
canvas.addEventListener('click', OpenFileDialog, false);
다시 작성하여 작동합니다.
Reference
이 문제에 관하여(【Unity】Unity 2020 WebGL 빌드에서 jslib에서 에러가 발생하게 된 경우의 메모), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/neusstudio/items/80900a40c620041465f6
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
TypeError: Cannot read property 'addEventListener' of null at [関数名]
Unity 2020.3.13f1
전제
WebGL에서 파일 대화 상자를 처리하는 방법으로 다음 기사의 FileImporter.jslib
참고로 하고 있었습니다.
Unity의 WebGL 출력에서 HTML 파일 선택 대화 상자를 표시하여 외부 파일 로드
오류 내용 및 원인
TypeError: Cannot read property 'addEventListener' of null at [関数名]
FileImporter.jslib 안에서 addEventListener 를 사용하고 있는 것은 한 곳, document.getElementById('#canvas') 뒤만입니다.
아무래도 ID: #canvas 로 Canvas 를 얻을 수 없게 된 것 같습니다…
아마도 Unity 2020부터 WebGL 빌드 파일의 출력 형식이 변경되었을 수 있습니다.
빌드 출력의 index.html을 들여다 보면,
그래서 #canvas가 아니라 unity-canvas라는 ID가 부여되게 된 것 같습니다.
또한 조금 아래로
에서 미리 취득해 주고 있으므로, getElementById 를 사용하지 않아도 변수 canvas 로서 직접 액세스 할 수 있을 것 같습니다.
대처
따라서 FileImporter.jslib의 두 위치
document.getElementById('#canvas').removeEventListener('click', OpenFileDialog);
document.getElementById('#canvas').addEventListener('click', OpenFileDialog, false);
,
document.getElementById('unity-canvas').removeEventListener('click', OpenFileDialog);
document.getElementById('unity-canvas').addEventListener('click', OpenFileDialog, false);
또는,
canvas.removeEventListener('click', OpenFileDialog);
canvas.addEventListener('click', OpenFileDialog, false);
다시 작성하여 작동합니다.
Reference
이 문제에 관하여(【Unity】Unity 2020 WebGL 빌드에서 jslib에서 에러가 발생하게 된 경우의 메모), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/neusstudio/items/80900a40c620041465f6
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
TypeError: Cannot read property 'addEventListener' of null at [関数名]
FileImporter.jslib 안에서 addEventListener 를 사용하고 있는 것은 한 곳, document.getElementById('#canvas') 뒤만입니다.
아무래도 ID: #canvas 로 Canvas 를 얻을 수 없게 된 것 같습니다…
아마도 Unity 2020부터 WebGL 빌드 파일의 출력 형식이 변경되었을 수 있습니다.
빌드 출력의 index.html을 들여다 보면,
그래서 #canvas가 아니라 unity-canvas라는 ID가 부여되게 된 것 같습니다.
또한 조금 아래로
에서 미리 취득해 주고 있으므로, getElementById 를 사용하지 않아도 변수 canvas 로서 직접 액세스 할 수 있을 것 같습니다.
대처
따라서 FileImporter.jslib의 두 위치
document.getElementById('#canvas').removeEventListener('click', OpenFileDialog);
document.getElementById('#canvas').addEventListener('click', OpenFileDialog, false);
,
document.getElementById('unity-canvas').removeEventListener('click', OpenFileDialog);
document.getElementById('unity-canvas').addEventListener('click', OpenFileDialog, false);
또는,
canvas.removeEventListener('click', OpenFileDialog);
canvas.addEventListener('click', OpenFileDialog, false);
다시 작성하여 작동합니다.
Reference
이 문제에 관하여(【Unity】Unity 2020 WebGL 빌드에서 jslib에서 에러가 발생하게 된 경우의 메모), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/neusstudio/items/80900a40c620041465f6
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
document.getElementById('#canvas').removeEventListener('click', OpenFileDialog);
document.getElementById('#canvas').addEventListener('click', OpenFileDialog, false);
document.getElementById('unity-canvas').removeEventListener('click', OpenFileDialog);
document.getElementById('unity-canvas').addEventListener('click', OpenFileDialog, false);
canvas.removeEventListener('click', OpenFileDialog);
canvas.addEventListener('click', OpenFileDialog, false);
Reference
이 문제에 관하여(【Unity】Unity 2020 WebGL 빌드에서 jslib에서 에러가 발생하게 된 경우의 메모), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/neusstudio/items/80900a40c620041465f6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)