Unity Web 构建中的 JavaScript 接口提供了一些有用的函数和变量,你可以使用它们来配置你的 Web 应用。你可以在 JavaScript 库代码中调用这些函数(.jslib 文件)。
使用 unityShowBanner()
函数来显示消息横幅,或者覆盖该函数以根据自己的目的进行自定义。
参数 | 描述 |
---|---|
msg |
你想要显示的消息。 |
type |
你想要显示的消息类型。例如
|
默认的 WebGL一个在 Web 浏览器中渲染 2D 和 3D 图形的 JavaScript API。Unity Web 构建选项允许 Unity 将内容发布为 JavaScript 程序,该程序使用 HTML5 技术和 WebGL 渲染 API 在 Web 浏览器中运行 Unity 内容。 更多信息
参阅 词汇表 模板中的以下代码设置了错误和警告横幅的外观。在你自己的模板中,你可以覆盖此函数以创建你自己的横幅类型,或者自定义显示非关键警告和错误消息的方式。
function unityShowBanner(msg, type) {
var warningBanner = document.querySelector("#unity-warning");
function updateBannerVisibility() {
warningBanner.style.display = warningBanner.children.length ? 'block' : 'none';
}
var div = document.createElement('div');
div.innerHTML = msg;
warningBanner.appendChild(div);
if (type == 'error') div.style = 'background: red; padding: 10px;';
else {
if (type == 'warning') div.style = 'background: yellow; padding: 10px;';
setTimeout(function() {
warningBanner.removeChild(div);
updateBannerVisibility();
}, 5000);
}
updateBannerVisibility();
}
你可以在 .jslib 文件中调用该函数。以下横幅将你想要显示的消息作为错误消息永久显示
unityShowBanner('The message you want to show', 'error');
使用 webglContextAttributes
来自定义 WebGL 上下文初始化时所用的创建属性。你只能更改以下属性
powerPreference
premultipliedAlpha
preserveDrawingBuffer
这些选项仅在你使用 WebGL 渲染 API 时适用。如果你使用 WebGPU 渲染 API,则忽略 webglContextAttributes
字段。
若要更改这些属性,请更改自定义 WebGL 模板中的配置对象。例如
script.onload = () => {
config['webglContextAttributes'] = {
powerPreference: 'high-performance',
premultipliedAlpha: false,
preserveDrawingBuffer: true,
};
createUnityInstance(canvas, config, (progress) => {
powerPreference
属性具有以下选项
选项 | 描述 |
---|---|
default | 让用户代理决定最适合哪个 GPU 配置。这是默认值。 |
high-performance | 优先考虑渲染性能,而降低功耗。 |
low-power | 优先考虑节能,而降低渲染性能。 |
有关各个属性的更多信息,请参阅 Mozilla 关于 HTMLCanvasElement: getContext() 的文档。
有关 Unity WebGL 图形的更多信息,请参阅 WebGL 图形。
如果需要在不同的 CDN 上托管流媒体资产,则可以调整 createUnityInstance()
配置对象上的 streamingAssetsUrl
属性,将其指向流媒体资产所在的完整 URL。
var buildUrl = "Build";
var config = {
dataUrl: buildUrl + "/{{{ DATA_FILENAME }}}",
frameworkUrl: buildUrl + "/{{{ FRAMEWORK_FILENAME }}}",
codeUrl: buildUrl + "/{{{ CODE_FILENAME }}}",
#if MEMORY_FILENAME
memoryUrl: buildUrl + "/{{{ MEMORY_FILENAME }}}",
#endif
#if SYMBOLS_FILENAME
symbolsUrl: buildUrl + "/{{{ SYMBOLS_FILENAME }}}",
#endif
streamingAssetsUrl: "https://mygameserver.com/StreamingAssets/", // Add this line to override the default streaming assets location
companyName: "{{{ COMPANY_NAME }}}",
productName: "{{{ PRODUCT_NAME }}}",
productVersion: "{{{ PRODUCT_VERSION }}}",
};
使用 cacheControl()
函数控制在 UnityCache
中缓存哪些 URL。该函数将 URL 作为参数接受,并返回 must-revalidate
、immutable
或 no-store
之一。你还可以根据自己的目的重写该函数。
有关代码范例和更多信息,请参阅 Web 中的缓存行为。