Version: 2022.3
언어: 한국어
배포 크기 및 코드 스트리핑
WebGL 템플릿

WebGL에서 텍스처 압축

WebGL에서 텍스처 압축을 사용하여 지원하는 텍스처 압축 포맷에 따라 플랫폼을 타게팅하는 빌드를 생성할 수 있습니다.여기서 설정한 텍스처 압축 포맷 값은 플레이어 설정 텍스처 압축 포맷 값보다 우선합니다. 압축된 텍스처로 데스크톱과 모바일 브라우저에서 게임을 실행하려면 두 개의 빌드 타게팅을 생성해야 합니다.

  • 텍스처 압축 포맷으로 DXT가 설정된 데스크톱 브라우저
  • 텍스처 압축 포맷으로 ASTC가 설정된 모바일 브라우저

스크립트에서 데스크톱 및 모바일 브라우저용 빌드 생성

스크립트를 사용하여 해당 텍스처 압축 포맷으로 동시에 데스크톱 브라우저 및 모바일 브라우저용 빌드를 실행할 수 있습니다.예시:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
using System.Diagnostics;
using System.IO;
using UnityEditor.Build.Reporting;

public class comboBuild
{
    //This creates a menu item to trigger the dual builds https://docs.unity3d.com/ScriptReference/MenuItem.html 

    [MenuItem("Game Build Menu/Dual Build")]
    public static void BuildGame()
    {
      //This builds the player twice: a build with desktop-specific texture settings (WebGL_Build) as well as mobile-specific texture settings (WebGL_Mobile), and combines the necessary files into one directory (WebGL_Build)
      
      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"));
    }  
}

텍스처 압축 포맷 확장자를 지원하는 경우 WebGL 템플릿index.html 파일을 수정하여 적절한 데이터 파일을 선택할 수 있습니다.

// choose the data file based on whether there's support for the ASTC texture compression format
      var dataFile = "/{{{ DATA_FILENAME }}}";                                  
      var c = document.createElement("canvas");                                 
      var gl = c.getContext("webgl");                                      
      var gl2 = c.getContext("webgl2");                                    
      if ((gl && gl.getExtension('WEBGL_compressed_texture_astc')) || (gl2 &&   
              gl2.getExtension('WEBGL_compressed_texutre_astc'))) {             
        dataFile =  "/WebGL_Mobile.data";                                       
      }                                                                         

      var buildUrl = "Build";
      var loaderUrl = buildUrl + "/{{{ LOADER_FILENAME }}}";                    
      var config = {                                                            
        dataUrl: buildUrl + dataFile,                                           
        frameworkUrl: buildUrl + "/{{{ FRAMEWORK_FILENAME }}}",                 
# if USE_WASM                                                                    
        codeUrl: buildUrl + "/{{{ CODE_FILENAME }}}",                           
# endif                                                                          
# if MEMORY_FILENAME                                                             
        memoryUrl: buildUrl + "/{{{ MEMORY_FILENAME }}}",                       
# endif
# if SYMBOLS_FILENAME                                                            
        symbolsUrl: buildUrl + "/{{{ SYMBOLS_FILENAME }}}",                     
# endif                                                                          
        streamingAssetsUrl:"StreamingAssets",                                
        companyName:{{{ JSON.stringify(COMPANY_NAME) }}},
        productName:{{{ JSON.stringify(PRODUCT_NAME) }}},
      productVersion:{{{ JSON.stringify(PRODUCT_VERSION) }}},                
        showBanner: unityShowBanner,                                            
     };

추가 리소스

배포 크기 및 코드 스트리핑
WebGL 템플릿