ドキュメント

Unity Engine

Unity Engine

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

Information about using texture compression in Web.
読み終わるまでの所要時間 8 分最終更新 1ヶ月前

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

テクスチャ圧縮形式

デスクトップデバイスとモバイルデバイスでは、サポートされているテクスチャ圧縮形式が異なります。ウェブアプリケーションが、両方のタイプのブラウザーで圧縮テクスチャを使用する場合は、サポートされているテクスチャ圧縮形式をまず選択する必要があります。
デスクトップブラウザーとモバイルブラウザーの両方で圧縮テクスチャを使用してゲームを実行するには、以下のブラウザー用に 2 つのビルドを作成します。
  • テクスチャ圧縮形式として DXT が設定されたデスクトップブラウザー
  • テクスチャ圧縮形式として adaptable scalable texture compression (ASTC) が設定されたモバイルブラウザー

圧縮形式設定の優先順位

ウェブアプリケーションのデフォルトテクスチャ圧縮形式は、Web Build Settings ウィンドウまたは Web Player Settings ウィンドウから設定できます。テクスチャ圧縮形式を設定する前に、これらの設定のうちどれを優先するかを決定することが重要です。Build Settings で設定した値は、Player Settings で設定した値よりも優先されます。デフォルトでは、Unity エディターは Build Settings の値を Use Player Settings に設定します。
注意エディターは、
Library
フォルダーの Build Settings でテクスチャ圧縮をシリアライズします。つまり、バージョン管理の対象ではありません。
個々のテクスチャのテクスチャ圧縮形式をカスタマイズすることもできます。個々のテクスチャに設定した値は、デフォルトのテクスチャ圧縮形式の値をオーバーライドします。個々のテクスチャのテクスチャ形式を変更する方法については、テクスチャのインポート設定 を参照してください。

デフォルト圧縮形式を設定する

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 ドロップダウンメニューから圧縮形式を選択します。
デスクトップブラウザーとモバイルブラウザーのそれぞれのテクスチャ圧縮形式に基づいて、それぞれのブラウザー用のビルドを同時に作成する方法の例については、デスクトップブラウザー用とモバイルブラウザー用ビルドをスクリプトから作成する を参照してください。

デスクトップブラウザー用とモバイルブラウザー用のビルドをスクリプトから作成する

デスクトップブラウザーとモバイルブラウザーのそれぞれのテクスチャ圧縮形式に基づいて、それぞれのブラウザー用のビルドをスクリプトを使用して同時に実行できます。 例:
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")); } }
テクスチャ圧縮形式の拡張がサポートされている場合は、ウェブテンプレートの
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, };

追加リソース