版本:Unity 6 (6000.0)
语言 : 英语
在 Unity C#、JavaScript 和 C/C++/C# 代码之间创建回调
替代已弃用的浏览器交互代码

Unity Web 构建中的 JavaScript 接口

Unity Web 构建中的 JavaScript 接口提供了一些有用的函数和变量,你可以使用它们来配置你的 Web 应用。你可以在 JavaScript 库代码中调用这些函数(.jslib 文件)。

显示错误、警告或自定义横幅

使用 unityShowBanner() 函数来显示消息横幅,或者覆盖该函数以根据自己的目的进行自定义。

参数 描述
msg 你想要显示的消息。
type 你想要显示的消息类型。例如
  • 使用 type == error 在画布顶部显示一条永久性错误消息。
  • 使用 type == warning 在消息上方显示黄色高亮颜色。

默认的 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');

更改 WebGL 上下文属性

使用 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-revalidateimmutableno-store 之一。你还可以根据自己的目的重写该函数。

有关代码范例和更多信息,请参阅 Web 中的缓存行为

其它资源

在 Unity C#、JavaScript 和 C/C++/C# 代码之间创建回调
替代已弃用的浏览器交互代码