WebGL 빌드 적용
WebGL 빌드에 TudadaSDK 적용하기
Unity WebGL로 빌드하면 index.html 파일이 생성됩니다. 이 파일에 TudadaSDK를 추가해야 실제 디바이스에서 SDK가 동작합니다.
HTML/JS를 잘 모르셔도 괜찮습니다. 아래 단계를 그대로 따라하면 됩니다.
Step 1: WebGL 빌드
- Unity 에디터에서 File > Build Settings 를 엽니다
- Platform을 WebGL로 선택합니다
- Build 버튼을 클릭하고, 빌드 출력 폴더를 선택합니다
빌드가 완료되면 다음과 같은 폴더가 생성됩니다:
빌드출력폴더/
├── index.html ← 이 파일을 수정합니다
├── Build/
│ ├── 빌드이름.loader.js
│ ├── 빌드이름.framework.js (또는 .framework.js.gz)
│ ├── 빌드이름.data (또는 .data.gz)
│ └── 빌드이름.wasm (또는 .wasm.gz)
└── TemplateData/
└── (아이콘, CSS 등)
Step 2: index.html 수정
빌드된 index.html 파일을 텍스트 에디터(메모장, VS Code 등)로 엽니다.
2-1. SDK 스크립트 태그 추가
index.html 파일에서 <body> 태그를 찾아, <body> 바로 아래에 다음 한 줄을 추가합니다:
주의: SDK 스크립트는 반드시
<body>태그 안에 배치해야 합니다.<head>에 넣으면 SDK 초기화가 정상적으로 동작하지 않을 수 있습니다.
<body>
<!-- SDK 로드 (body 최상단에 추가) -->
<script src="https://tudada-game.2bytespublishing.kr/dev/releases/tudadaGameSDK.0.1.5.dev.js"></script>
... (기존 내용) ...
</body>
2-2. Unity 로딩 코드 수정
index.html 내부에는 Unity를 로드하는 JavaScript 코드가 있습니다.
이 코드를 찾아서 TudadaSDK 초기화 대기 → Unity 로드 → SDK 연결 순서로 수정합니다.
수정 전 (Unity가 자동 생성한 코드):
보통 아래와 비슷한 형태입니다:
var script = document.createElement("script");
script.src = loaderUrl;
script.onload = () => {
createUnityInstance(canvas, config, (progress) => {
// 로딩 진행률 처리
}).then((unityInstance) => {
// Unity 로드 완료
}).catch((message) => {
alert(message);
});
};
document.body.appendChild(script);
수정 후:
위 코드를 아래와 같이 변경합니다:
// 1. TudadaSDK 초기화 대기
TudadaGameSDK.waitForReady()
.then(() => {
console.log('TudadaSDK 초기화 완료');
// 2. Unity 로더 스크립트 로드
var script = document.createElement("script");
script.src = loaderUrl;
script.onload = () => {
// 3. Unity 인스턴스 생성
createUnityInstance(canvas, config, (progress) => {
// 로딩 진행률 처리 (기존 코드 유지)
}).then((unityInstance) => {
// 4. Unity 인스턴스를 SDK에 연결
TudadaGameSDK.connectUnity(unityInstance);
console.log('Unity 인스턴스 연결 완료');
}).catch((message) => {
alert(message);
});
};
document.body.appendChild(script);
})
.catch((error) => {
console.error('TudadaSDK 초기화 실패:', error);
});
핵심 변경사항 2가지:
- 전체 Unity 로딩 코드를
TudadaGameSDK.waitForReady().then(() => { ... })으로 감쌈- Unity 로드 완료 후
TudadaGameSDK.connectUnity(unityInstance)한 줄 추가
Step 3: 완성된 index.html 전체 예시
참고용으로, 수정이 완료된 전체 index.html 예시입니다. Unity 버전과 빌드 설정에 따라 세부 내용은 다를 수 있으므로, 실제로는 자동 생성된 파일에서 위 Step 2의 두 가지만 수정하시면 됩니다.
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
<title>My Unity Game</title>
<link rel="stylesheet" href="TemplateData/style.css">
</head>
<body>
<!-- TudadaSDK 로드 (body 최상단) -->
<script src="https://tudada-game.2bytespublishing.kr/dev/releases/tudadaGameSDK.0.1.5.dev.js"></script>
<div id="unity-container">
<canvas id="unity-canvas" tabindex="-1"></canvas>
<div id="unity-loading-bar">
<div id="unity-progress-bar-full"></div>
</div>
</div>
<script>
var canvas = document.querySelector("#unity-canvas");
var config = {
dataUrl: "Build/MyGame.data",
frameworkUrl: "Build/MyGame.framework.js",
codeUrl: "Build/MyGame.wasm",
streamingAssetsUrl: "StreamingAssets",
companyName: "MyCompany",
productName: "MyGame",
productVersion: "1.0.0",
};
var loaderUrl = "Build/MyGame.loader.js";
// 1. TudadaSDK 초기화 대기
TudadaGameSDK.waitForReady()
.then(() => {
console.log('TudadaSDK 초기화 완료');
// 2. Unity 로더 스크립트 로드
var script = document.createElement("script");
script.src = loaderUrl;
script.onload = () => {
// 3. Unity 인스턴스 생성
createUnityInstance(canvas, config, (progress) => {
document.querySelector("#unity-progress-bar-full").style.width =
100 * progress + "%";
}).then((unityInstance) => {
// 4. Unity 인스턴스를 SDK에 연결
TudadaGameSDK.connectUnity(unityInstance);
console.log('Unity 인스턴스 연결 완료');
// 로딩바 숨기기
document.querySelector("#unity-loading-bar").style.display = "none";
}).catch((message) => {
alert(message);
});
};
document.body.appendChild(script);
})
.catch((error) => {
console.error('TudadaSDK 초기화 실패:', error);
alert('SDK 초기화에 실패했습니다: ' + error.message);
});
</script>
</body>
</html>
Step 4: 최종 파일 구조 확인
SDK는 CDN에서 로드되므로 별도의 SDK 파일을 빌드 폴더에 복사할 필요가 없습니다.
빌드출력폴더/
├── index.html ← 수정 완료
├── Build/
│ ├── MyGame.loader.js
│ ├── MyGame.framework.js
│ ├── MyGame.data
│ └── MyGame.wasm
└── TemplateData/
└── ...
압축된 빌드의 경우
Unity에서 Compression Format을 Gzip으로 설정한 경우, Build 폴더의 파일들이 .gz 확장자를 가집니다. index.html 수정 방법은 동일하며, config 객체의 URL만 확장자가 다릅니다:
주의: Brotli 압축은 지원되지 않습니다. Unity Build Settings에서 Compression Format을 Gzip 또는 Disabled로 설정하세요.
var config = {
dataUrl: "Build/MyGame.data.gz", // .gz 추가됨
frameworkUrl: "Build/MyGame.framework.js.gz",
codeUrl: "Build/MyGame.wasm.gz",
};