在模板的 index.html 文件中使用自定义用户变量,并使用 createUnityInstance() 创建内容的新实例。
有关模板变量、JavaScript 宏和条件指令的信息,请参阅 Web 模板变量。
要添加自定义 Web 模板,请参阅添加自定义 Web 模板。
选择 Web 模板时,Unity 会解析模板并查找 JavaScript 宏和条件指令。
Unity 将 JavaScript 变量视为自定义用户变量,前提是它们:
Unity 会自动将这些自定义用户变量添加到播放器设置 (Player settings) 窗口中的分辨率和呈现 (Resolution and Presentation) 部分。
例如,如果要直接从播放器设置 (Player settings) 窗口控制生成的 index.html 页面的标题,则首先需要在自定义模板中修改 index.html 的 <title> 行,如下所示:
<title>{{{ PAGE_TITLE }}}</title>
完成此操作后,重新选择自定义模板。这会再次解析模板,而且页面标题 (Page Title) 字段将显示在播放器设置 (Player settings) 窗口的分辨率和呈现 (Resolution and Presentation) > Web 模板 (Web Template) 部分中。
在此字段中输入文本并构建项目时,模板宏中使用的自定义变量 PAGE_TITLE 会自动成为页面标题 (Page Title) 字段中的文本。
如果要在宏中使用自定义整数或浮点变量,请在宏中使用 parseInt() 或 parseFloat() JavaScript 函数以预处理 Unity 编辑器提供的字符串值。这是因为会始终向自定义用户变量分配字符串值。
注意:变量名称中的下划线字符在字段内会显示为空格以提高可读性。
index.html 包含加载构建所需的代码,应包含以下内容:
<canvas> 元素。Unity 运行时使用 <canvas> 元素渲染应用程序。var buildUrl = "Build";
var loaderUrl = buildUrl + "/{{{ LOADER_FILENAME }}}";
var script = document.createElement("script");
script.src = loaderUrl;
script.onload = () => {
// code for instantiating the build
};
document.body.appendChild(script);`
在此示例中,{{{ LOADER_FILENAME }}} 在生成构建时由模板预处理器自动解析。
或者,可以使用脚本标签下载构建加载程序,例如:
lang-js
<script src="Build/{{{ LOADER_FILENAME }}}"></script>
createUnityInstance() 函数进行实例化,该函数在构建加载程序脚本中定义。
createUnityInstance() 函数为您的内容创建新实例。可以按如下所示使用它:
createUnityInstance(canvas, config, onProgress).then(onSuccess).catch(onError);
此函数返回一个 Promise 对象,其中:
| 对象 | 用途 |
|---|---|
canvas |
Unity 运行时使用 canvas 对象渲染游戏。 |
config |
config 对象包含构建配置,例如代码和数据 URL、产品和公司名称以及版本。有关配置定义的更多信息,请参阅 Web 模板构建配置和交互。 |
onProgress(progress) {...} |
每次下载进度更新时,Web 加载程序都会调用 onProgress 回调对象。onProgress 回调附带的 progress 参数会确定加载进度(形式为介于 0.0 与 1.0 之间的值)。 |
onSuccess(unityInstance) {...} |
构建成功实例化之后会调用 onSuccess 回调。创建的 Unity 实例对象作为参数提供。此对象可以用于与构建交互。 |
onError(message) {...} |
如果在构建实例化期间发生错误,则调用 onError 回调。错误消息作为参数提供。 |
createUnityInstance() 函数在构建加载程序脚本中定义,特定于实例化的构建。因此,如果在同一个 HTML 文档中嵌入两个或更多构建,请确保从相应构建加载程序脚本的 onload 回调中调用 createUnityInstance() 函数。有关 Unity Web Loader 的更多信息,请参阅 Web 构建文件夹和 Web 模板结构和实例化。