Version: Unity 6.0 (6000.0)
언어 : 한국어
웹 템플릿 구조 및 인스턴스화
웹 템플릿 빌드 설정 및 상호 작용

웹 템플릿 변수

빌드 프로세스 중에 Unity는 템플릿 파일을 미리 처리하고 해당 파일에 포함된 모든 매크로와 조건부 지시문을 평가합니다. 이 프로세스의 일환으로 Unity는 모든 매크로 선언을 Unity 에디터가 제공하는 값으로 찾아 교체합니다. Unity는 템플릿 폴더의 모든 .html, .php, .css, .js 및 .json 파일을 자동으로 프리 프로세싱합니다.

내부 프리 프로세서 변수

다음 내부 프리 프로세서 변수는 프로젝트의 데이터를 참조하며, Unity는 에디터가 제공하는 값에 따라 빌드 시점에 값을 할당합니다. JavaScript 매크로와 조건부 지시문은 이러한 내부 프리 프로세서 변수를 사용할 수 있습니다.

가변 유형 설명
COMPANY_NAME String 플레이어 설정에 정의된 회사 이름입니다.
PRODUCT_NAME String 플레이어 설정에 정의된 제품 이름입니다.
PRODUCT_VERSION String 플레이어 설정에 정의된 버전입니다.
WIDTH 정수 Player Settings > Resolution and Presentation에 정의된 기본 캔버스 너비입니다.
HEIGHT 정수 Player Settings > Resolution and Presentation에 정의된 기본 캔버스 높이입니다.
SPLASH_SCREEN_STYLE String Splash Style Player Settings > Splash Image가 Light on Dark로 설정되어 있을 때 ‘Dark’ 값으로 설정되고, 그렇지 않으면 ‘Light’ 값으로 설정됩니다.
BACKGROUND_COLOR String 16진수 표기법 형식으로 정의된 배경 컬러를 나타냅니다.
UNITY_VERSION String Unity 버전입니다.
DEVELOPMENT_PLAYER 부울 Development Build 옵션이 활성화되면 true로 설정됩니다.
DECOMPRESSION_FALLBACK String 사용하는 압축 방식과 빌드에 포함된 압축 해제기 유형에 따라 Gzip 또는 Brotli로 설정됩니다. 둘 다 포함되지 않으면 변수가 빈 문자열로 설정됩니다.
INITIAL_MEMORY 정수 WASM 메모리 힙 초기 크기(MB 단위)
USE_WASM 부울 현재 빌드가 WebAssembly 빌드이면 true로 설정됩니다.
USE_THREADS 부울 현재 빌드가 스레드를 사용하면 true로 설정됩니다.
USE_WEBGL_1_0 부울 현재 빌드가 WebGL1.0 그래픽스 API를 지원하면 true로 설정됩니다.
USE_WEBGL_2_0 부울 현재 빌드가 WebGL2.0 그래픽스 API를 지원하면 true로 설정됩니다.
USE_DATA_CACHING 부울 현재 빌드가 다운로드된 파일에 indexedDB 캐싱을 사용하면 true로 설정됩니다.
LOADER_FILENAME String 빌드 로더 스크립트의 파일 이름으로 설정됩니다.
DATA_FILENAME String 메인 데이터 파일의 파일 이름으로 설정됩니다.
FRAMEWORK_FILENAME String 빌드 프레임워크 스크립트의 파일 이름으로 설정됩니다.
CODE_FILENAME String 현재 빌드가 WebAssembly 빌드인 경우 WebAssembly 모듈의 파일 이름으로 설정되며, 그렇지 않으면 asm.js 모듈의 파일 이름으로 설정됩니다.
MEMORY_FILENAME String 메모리가 외부 파일에 저장되는 경우 메모리 파일의 파일 이름으로 설정되며, 그렇지 않은 경우 빈 문자열로 설정됩니다.
SYMBOLS_FILENAME String 현재 빌드에서 디버그 심볼을 사용하는 경우 디버그 심볼을 포함하는 JSON 파일의 파일 이름으로 설정되며, 그렇지 않은 경우 빈 문자열로 설정됩니다.
BACKGROUND_FILENAME String 배경 이미지를 Player Settings > Splash Image에서 선택하는 경우 배경 이미지의 파일 이름으로 설정되며, 그렇지 않은 경우 빈 문자열로 설정됩니다.

JavaScript 매크로

JavaScript 매크로는 템플릿 파일의 JavaScript 코드 블록으로, 중괄호 세 쌍으로 둘러싸여 있습니다. 이 JavaScript 코드는 위에 나열된 내부 프리 프로세서 변수를 사용할 수 있습니다. 이러한 변수는 에디터에서 제공하는 값에 따라 빌드 시점에 할당됩니다. 빌드 중에 프리 프로세서는 모든 매크로를 평가하고 변수의 출력으로 대체합니다.

JavaScript 매크로를 사용하여 에디터에서 제공하는 값을 프리 프로세싱할 수 있습니다. 이러한 매크로는 사용하다 보면 복잡할 수 있으며, 여러 연산자, 루프, 함수 및 기타 JavaScript 구성 요소를 포함할 수 있습니다.

다음 예시 줄은 기본 템플릿에서 사용된 index.html 파일에서 가져온 것입니다.

<div id="unity-build-title">{{{ PRODUCT_NAME }}}</div>

Player Settings에서 Product Name의 값이 My WebGL Game으로 설정된 경우 내부 프리 프로세서 변수 PRODUCT_NAME의 값은 My WebGL Game입니다. 출력 index.html 파일의 줄은 다음과 같이 표시됩니다.

<div id="unity-build-title">My WebGL Game</div>

다음은 동일한 index.html 템플릿 파일의 좀더 복잡한 예시입니다.

canvas.style.background = "url('" + buildUrl + "/{{{ BACKGROUND_FILENAME.replace(/'/g, '%27') }}}') center / cover";

타겟 빌드 폴더의 이름이 Let’s try WebGL이고 Player Settings에서 배경 이미지를 선택하면 내부 프리 프로세서 변수 BACKGROUND_FILENAMELet’s try WebGL.jpg 값을 갖습니다. 출력 index.html 파일에서 줄은 다음과 같이 변경됩니다.

canvas.style.background = "url('" + buildUrl + "/Let%27s try WebGL.jpg') center / cover";

조건부 지시문

조건부 지시문 #if, #else, #endif는 Unity가 프리 프로세싱된 파일의 특정 부분을 출력 파일에 포함할지, 아니면 현재 빌드에서 삭제할지 여부를 제어합니다.

#if 지시문으로 시작하고 #endif 지시문으로 끝나는 코드는 조건부 그룹이라고 합니다. 조건부 그룹에는 #else 지시문도 포함될 수 있습니다. Unity는 #if 뒤에 작성된 표현식을 JavaScript 표현식으로 평가합니다. 이 표현식이 부울 컨텍스트에서 평가될 때 true로 해석되는 true와 같은 값을 갖는 경우, Unity는 출력 파일에서 #if 지시문 바로 다음에 줄 그룹을 유지합니다. #if 표현식이 false이고 조건부 그룹에 #else 지시문이 포함된 경우 Unity는 출력에서 #else 지시문 바로 뒤에 줄 그룹을 유지합니다. 조건부 그룹의 예시는 다음과 같습니다.

#if EXPRESSION
  // this block is included in the output if EXPRESSION has a truthy value
#else
  // this block is included in the output otherwise
#endif

평가된 JavaScript 표현식에는 대괄호, 논리 연산자, 기타 JavaScript 생성자가 포함될 수 있습니다. 조건부 지시문은 중첩될 수 있습니다.

추가 리소스

웹 템플릿 구조 및 인스턴스화
웹 템플릿 빌드 설정 및 상호 작용