ウェブプラットプラットフォームでテクスチャ圧縮を使用し、プラットフォームでサポートされているテクスチャ圧縮形式に基づいて、そのプラットフォーム用のビルドを作成します。
デスクトップデバイスとモバイルデバイスでは、サポートされているテクスチャ圧縮形式が異なります。ウェブアプリケーションが、両方のタイプのブラウザーで圧縮テクスチャを使用する場合は、サポートされているテクスチャ圧縮形式をまず選択する必要があります。
デスクトップブラウザーとモバイルブラウザーの両方で圧縮テクスチャを使用してゲームを実行するには、以下のブラウザー用に 2 つのビルドを作成します。
ウェブアプリケーションのデフォルトテクスチャ圧縮形式は、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 を使用して、デフォルトのテクスチャ圧縮形式を選択する手順:
Player Settings を使用して、デフォルトのテクスチャ圧縮形式を選択する手順:
デスクトップブラウザーとモバイルブラウザーのそれぞれのテクスチャ圧縮形式に基づいて、それぞれのブラウザー用のビルドを同時に作成する方法の例については、デスクトップブラウザー用とモバイルブラウザー用ビルドをスクリプトから作成する を参照してください。
デスクトップブラウザーとモバイルブラウザーのそれぞれのテクスチャ圧縮形式に基づいて、それぞれのブラウザー用のビルドをスクリプトを使用して同時に実行できます。 例:
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,
};