Version: 6000.3
语言: 中文
Web 模板结构和实例化
Web 模板构建配置和交互

Web 模板变量

在构建过程中,Unity 会预处理模板文件并评估这些文件中包含的所有宏和条件指令。作为此过程的一部分,Unity 会查找所有宏声明并将其替换为 Unity 编辑器提供的值。Unity 会自动预处理模板文件夹中的所有.html、.php、.css、.js和.json文件。

内部预处理器变量

以下内部预处理器变量引用项目中的数据,Unity 在构建时根据编辑器提供的值为它们分配值。JavaScript 宏和条件指令可以使用这些内部预处理器变量。

变量 类型 描述
COMPANY_NAME 字符串 玩家设置设置,可让您为 Unity 构建的最终游戏设置各种特定于玩家的选项。更多信息
请参阅术语表
.
PRODUCT_NAME 字符串 在播放器设置中定义的产品名称。
PRODUCT_VERSION 字符串 播放器设置中定义的版本。
宽度 整数 在播放器设置中定义的默认画布宽度>分辨率和演示。
高度 整数 播放器设置中的默认画布高度>分辨率和演示。
SPLASH_SCREEN_STYLE 字符串 当 启动图像的 启动样式播放器设置(Splash Style Player Settings > 设置为 浅色(Light on Dark) 时,该值将设置为“暗色(Dark) 值,否则设置为 ”浅色(Light) 值。
BACKGROUND_COLOR 字符串 表示以十六进制三元组形式定义的背景颜色。
UNITY_VERSION 字符串 Unity 版本。
DEVELOPMENT_PLAYER 布尔 如果开发版本开发版本包括调试符号并启用性能分析器。更多信息
请参阅术语表
选项已启用。
DECOMPRESSION_FALLBACK 字符串 这设置为GzipBrotli,具体取决于压缩一种存储数据的方法,可减少所需的存储空间量。请参阅纹理压缩动画压缩音频压缩构建压缩
请参阅术语表
您使用的方法以及构建中包含的解压缩器类型。如果两者都不包含,则变量设置为空字符串。
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 字符串 这设置为构建加载器脚本的文件名。
DATA_FILENAME 字符串 设置为主数据文件的文件名。
FRAMEWORK_FILENAME 字符串 这设置为构建框架脚本的文件名。
CODE_FILENAME 字符串 当当前构建是 WebAssembly 构建时,将其设置为 WebAssembly 模块的文件名,否则将其设置为asm.js模块。
MEMORY_FILENAME 字符串 当内存存储在外部文件中时,将其设置为内存文件的文件名,否则将其设置为空字符串。
SYMBOLS_FILENAME 字符串 当当前生成使用调试符号时,将此值设置为包含调试符号的 JSON 文件的文件名,否则将其设置为空字符串。
BACKGROUND_FILENAME 字符串 播放器设置(Player Settings) > 启动图像(Splash Image) 中选择背景图像时,将其设置为背景图像的文件名,否则将其设置为空字符串。

JavaScript 宏

JavaScript 宏是模板文件中的 JavaScript 代码块,由三组大括号包围。此 JavaScript 代码可以使用上面列出的内部预处理器变量。这些变量在构建时根据编辑器提供的值进行分配。在构建过程中,预处理器会评估所有宏,并将它们替换为变量的输出。

您可以使用 JavaScript 宏来预处理编辑器提供的值。这些宏可以随心所欲地复杂。它们可以包括多个运算符、循环、函数和任何其他 JavaScript 构造。

以下示例行来自index.html默认模板中使用的文件:

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

如果播放器设置中的产品名称值设置为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,如果在播放器设置中选择背景图像,则内部预处理器变量BACKGROUND_FILENAME具有价值Let’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 的真值,则 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 构造。条件指令可以嵌套。

其他资源

Web 模板结构和实例化
Web 模板构建配置和交互