# ウェブでのテクスチャ圧縮

> Information about using texture compression in Web.

ウェブプラットプラットフォームでテクスチャ圧縮を使用し、プラットフォームでサポートされているテクスチャ圧縮形式に基づいて、そのプラットフォーム用のビルドを作成します。

## テクスチャ圧縮形式##texture-compression-formats

デスクトップデバイスとモバイルデバイスでは、サポートされているテクスチャ圧縮形式が異なります。ウェブアプリケーションが、両方のタイプのブラウザーで圧縮テクスチャを使用する場合は、サポートされているテクスチャ圧縮形式をまず選択する必要があります。

デスクトップブラウザーとモバイルブラウザーの両方で圧縮テクスチャを使用してゲームを実行するには、以下のブラウザー用に 2 つのビルドを作成します。

* テクスチャ圧縮形式として DXT が設定されたデスクトップブラウザー
* テクスチャ圧縮形式として adaptable scalable texture compression (ASTC) が設定されたモバイルブラウザー

## 圧縮形式設定の優先順位##precedence-for-compression-format-settings

ウェブアプリケーションのデフォルトテクスチャ圧縮形式は、[Web Build Settings](/engine/6000.0/manual/platform-specific/webgl/building-distribution/web-build-settings.md) ウィンドウまたは Web [Player Settings](/engine/6000.0/manual/platform-specific/webgl/develop/class-player-settings-web-gl.md) ウィンドウから設定できます。テクスチャ圧縮形式を設定する前に、これらの設定のうちどれを優先するかを決定することが重要です。Build Settings で設定した値は、Player Settings で設定した値よりも優先されます。デフォルトでは、Unity エディターは Build Settings の値を **Use Player Settings** に設定します。

**注意**エディターは、`Library` フォルダーの Build Settings でテクスチャ圧縮をシリアライズします。つまり、バージョン管理の対象ではありません。

個々のテクスチャのテクスチャ圧縮形式をカスタマイズすることもできます。個々のテクスチャに設定した値は、デフォルトのテクスチャ圧縮形式の値をオーバーライドします。個々のテクスチャのテクスチャ形式を変更する方法については、[テクスチャのインポート設定](/engine/6000.0/manual/materials-and-shaders/textures/textures-reference/class-texture-importer.md) を参照してください。

## デフォルト圧縮形式を設定する##set-the-default-compression-format

Build Settings または Player Settings を使用して、ウェブアプリケーションのデフォルトのテクスチャ圧縮形式を設定できます。Build Settings で設定した値は、Player Settings で設定した値よりも優先されます。デフォルトでは、Unity エディターは Build Settings の値を **Use Player Settings** に設定します。

Build Settings を使用して、デフォルトのテクスチャ圧縮形式を選択する手順:

1. **File** > **Build Settings** を選択します。
2. **Platform** ペインでプラットフォームのリストから **Web** を選択します。
3. **Texture Compression** ドロップダウンメニューから圧縮形式を選択します。

Player Settings を使用して、デフォルトのテクスチャ圧縮形式を選択する手順:

1. **File** > **Build Settings** を選択します。
2. **Platform** ペインでプラットフォームのリストから **Web** を選択します。
3. **Player Settings** > **Other Settings** を選択します。
4. **Texture compression format** ドロップダウンメニューから圧縮形式を選択します。

デスクトップブラウザーとモバイルブラウザーのそれぞれのテクスチャ圧縮形式に基づいて、それぞれのブラウザー用のビルドを同時に作成する方法の例については、[デスクトップブラウザー用とモバイルブラウザー用ビルドをスクリプトから作成する](#desktop+mobile) を参照してください。

## デスクトップブラウザー用とモバイルブラウザー用のビルドをスクリプトから作成する##create-builds-for-desktop-and-mobile-browsers-from-a-scriptscrollpoint-id=desktop+mobile-/

デスクトップブラウザーとモバイルブラウザーのそれぞれのテクスチャ圧縮形式に基づいて、それぞれのブラウザー用のビルドをスクリプトを使用して同時に実行できます。 例:

```
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"));
    }  
}
```

テクスチャ圧縮形式の拡張がサポートされている場合は、[ウェブテンプレートの](/engine/6000.0/manual/platform-specific/webgl/building-distribution/templates.md) `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_texture_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,                                            
     };  
```

## 追加リソース##additional-resources

* [ウェブアプリケーションをビルドする](/engine/6000.0/manual/platform-specific/webgl/building-distribution/building.md)
* [プレイヤー設定 / Player Settings](/engine/6000.0/manual/platform-specific/webgl/develop/class-player-settings-web-gl.md)
