Version: Unity 6.0 (6000.0)
语言 : 中文
Web 模板结构和实例化
Web 模板构建配置和交互

Web 模板变量

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

内部预处理器变量

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

可变 Type 描述
COMPANY_NAME String 在 Player Settings 中定义的 Company Name。
PRODUCT_NAME String 在 Player Settings 中定义的 Product Name。
PRODUCT_VERSION String 在 Player Settings 中定义的 Version。
WIDTH Integer 在 Player Settings > Resolution and Presentation 中定义的 Default Canvas Width。
HEIGHT Integer Player Settings > Resolution and Presentation 中的 Default Canvas Height。
SPLASH_SCREEN_STYLE String 当“启动样式播放器设置 (Splash Style Player Settings) > 启动画面 (Splash Image)”设置为“暗底亮字 (Light on Dark)”时,此变量设置为“暗 (Dark)”值,否则设置为“亮 (Light)”值。
BACKGROUND_COLOR String 表示以十六进制三元组形式定义的背景颜色。
UNITY_VERSION String Unity 版本。
DEVELOPMENT_PLAYER Boolean 如果启用了 Development Build 选项,则此变量设置为 true。
DECOMPRESSION_FALLBACK String 此属性设置为 GzipBrotli,具体取决于您使用的压缩方法和构建中包含的解压缩器类型。如果两者都不包含,则变量设置为空字符串。
INITIAL_MEMORY Integer WASM 内存堆的初始大小(以 MB 为单位)。
USE_WASM Boolean 如果当前构建是 WebAssembly 构建,则此变量设置为 true。
USE_THREADS Boolean 如果当前构建使用线程,则此变量设置为 true。
USE_WEBGL_1_0 Boolean 如果当前构建支持 WebGL1.0 图形 API,则此变量设置为 true。
USE_WEBGL_2_0 Boolean 如果当前构建支持 WebGL2.0 图形 API,则此变量设置为 true。
USE_DATA_CACHING Boolean 如果当前构建对下载的文件使用 indexedDB 缓存,则此变量设置为 true。
LOADER_FILENAME String 此变量设置为构建加载程序脚本的文件名。
DATA_FILENAME String 此变量设置为主数据文件的文件名。
FRAMEWORK_FILENAME String 此变量设置为构建框架脚本的文件名。
CODE_FILENAME String 在当前构建是 WebAssembly 构建时,此变量设置为 WebAssembly 模块的文件名,否则设置为 asm.js 模块的文件名。
MEMORY_FILENAME String 当内存存储在外部文件中时,此变量设置为内存文件的文件名,否则设置为空字符串。
SYMBOLS_FILENAME String 在当前构建使用调试符号时,此变量设置为包含调试符号的 JSON 文件的文件名,否则设置为空字符串。
BACKGROUND_FILENAME String 当在播放器设置 (Player Settings) > 启动画面 (Splash Image) 中选择了背景图像时,此变量设置为背景图像的文件名,否则设置为空字符串。

JavaScript 宏

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

可以使用 JavaScript 宏预处理编辑器提供的值。这些宏可以实现任意您所需的复杂性。它们可以包含多个运算符、循环、函数和任何其他 JavaScript 结构。

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

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

如果播放器设置中产品名称 (Product Name) 的值设置为 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 模板构建配置和交互