Unity WebGL 애플리케이션 빌드 및 배포 가이드
이 문서는 Unity를 사용하여 WebGL 애플리케이션을 빌드하고 배포하는 방법에 대해 설명합니다. 아래의 내용을 통해 텍스처 압축, 빌드 생성, 스크립트 작성법 등을 쉽게 이해할 수 있습니다.
텍스처 압축이란?
WebGL에서 텍스처 압축은 게임의 성능과 로딩 속도를 개선하는 데 중요한 역할을 합니다. 텍스처 압축 포맷으로는 DXT와 ASTC가 있습니다.
- DXT: 주로 데스크톱 브라우저에서 지원되는 포맷입니다.
- ASTC: 모바일 브라우저에서 주로 지원되는 포맷입니다.
빌드 설정
WebGL에서 텍스처 압축 포맷 값은 플레이어 설정의 값보다 우선적으로 사용됩니다. 이를 통해 각 플랫폼에 맞는 최적의 빌드를 생성할 수 있습니다.
빌드 타겟
데스크톱과 모바일 브라우저에서 게임이 적절하게 작동하도록 하려면 두 가지 빌드 타겟을 생성해야 합니다.
빌드 타겟 | 텍스처 압축 포맷 |
---|---|
데스크톱 브라우저 | DXT |
모바일 브라우저 | ASTC |
스크립트를 통한 빌드 생성
Unity의 스크립트를 이용하여 데스크톱과 모바일의 웹GL 빌드를 동시에 생성할 수 있습니다. 아래는 그 예시입니다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
using System.Diagnostics;
using System.IO;
using UnityEditor.Build.Reporting;
public class comboBuild
{
[MenuItem("Game Build Menu/Dual Build")]
public static void BuildGame()
{
string dualBuildPath = "WebGLBuilds";
string desktopBuildName = "WebGL_Build";
string mobileBuildName = "WebGL_Mobile";
string desktopPath = Path.Combine(dualBuildPath, desktopBuildName);
string mobilePath = Path.Combine(dualBuildPath, mobileBuildName);
string[] scenes = new string[] {"Assets/scene.unity"};
EditorUserBuildSettings.webGLBuildSubtarget = WebGLTextureSubtarget.DXT;
BuildPipeline.BuildPlayer(scenes, desktopPath, BuildTarget.WebGL, BuildOptions.Development);
EditorUserBuildSettings.webGLBuildSubtarget = WebGLTextureSubtarget.ASTC;
BuildPipeline.BuildPlayer(scenes, mobilePath, BuildTarget.WebGL, BuildOptions.Development);
// Copy the mobile.data file to the desktop build directory to consolidate them both
FileUtil.CopyFileOrDirectory(Path.Combine(mobilePath, "Build", mobileBuildName + ".data"), Path.Combine(desktopPath, "Build", mobileBuildName + ".data"));
}
}
위 코드는 Unity의 메뉴에 "Dual Build" 항목을 추가하여 버튼 클릭만으로 데스크톱과 모바일 빌드를 동시에 생성할 수 있게 해줍니다.
index.html 수정하기
WebGL 템플릿의 index.html
파일에서 ASTC 텍스처 압축 포맷을 지원하는 경우에 맞는 데이터 파일을 선택하도록 수정할 수 있습니다.
var dataFile = "/{{{ DATA_FILENAME }}}";
var c = document.createElement("canvas");
var gl = c.getContext("webgl");
var gl2 = c.getContext("webgl2");
||
|---|
gl2.getExtension('WEBGL_compressed_texutre_astc'))) {
dataFile = "/WebGL_Mobile.data";
}
추가 리소스
더 깊이 있는 정보는 Unity의 공식 문서를 참조하세요.
리소스 |
---|
WebGL 애플리케이션 빌드 |
플레이어 설정 |
배포 크기 및 코드 스트리핑 |
WebGL 템플릿 |
이 문서를 통해 Unity에서 WebGL 애플리케이션을 빌드하고 배포하는 기본적인 이해를 도울 수 있기를 바랍니다. 추가적인 질문이나 필요한 정보가 있다면 Unity의 커뮤니티 포럼을 활용하세요!