包含此页的版本:
不含此页的版本:
在构建过程中,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 | 字符串 | 这设置为Gzip或Brotli,具体取决于压缩一种存储数据的方法,可减少所需的存储空间量。请参阅纹理压缩、动画压缩、音频压缩、构建压缩。请参阅术语表您使用的方法以及构建中包含的解压缩器类型。如果两者都不包含,则变量设置为空字符串。 |
| 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 构造。
以下示例行来自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 构造。条件指令可以嵌套。