发布到 WebGL
Kmax XR Core 包含 WebGL 平台的追踪通信与显示控制实现。浏览器中的立体显示仍依赖 Kmax 设备及其追踪服务,普通浏览器不会因此获得硬件追踪能力。
构建与部署
- 按照快速开始配置场景中的
XRRig、输入模块和画布。 - 将 Unity 项目切换到 WebGL 平台并构建。
- 通过 Web 服务器提供构建产物,并在目标设备上打开页面。
- 确认设备追踪服务连接成功后,再请求进入立体模式。
WebGL 默认使用单目显示。应用需要根据自己的交互流程请求切换,例如在用户进入或退出全屏时切换。
切换显示与追踪
SDK 的 WebGL 通信初始化会创建名为 WebMessageReceiver 的对象。页面通过 unityInstance.SendMessage 调用其 SetXRMode 方法:
- 参数
1:请求开启追踪与立体显示。 - 参数
0:请求关闭追踪并恢复单目显示。
以下代码放在获取 unityInstance 后的作用域内,例如 createUnityInstance(...).then((unityInstance) => { ... }) 的回调中。事件触发时,场景中的接收对象和设备服务连接也必须已经就绪。
document.addEventListener("fullscreenchange", () => {
const xrEnabled = document.fullscreenElement !== null;
unityInstance.SendMessage(
"WebMessageReceiver",
"SetXRMode",
xrEnabled ? 1 : 0
);
});

如果页面还包含视频等其他全屏元素,应改为判断应用自己的全屏容器,避免误触发。建议将修改维护在项目的 WebGL 模板中,避免下次构建覆盖手动编辑的 index.html。
连接与兼容性
当前实现默认连接本机(localhost)的 WebSocket 追踪服务。请求过早或连接未建立时会产生错误,需检查浏览器 Console 和设备服务状态。
旧版接入说明给出的环境基线为 Unity 2020 或更高版本、科骏相机 3.8.0 或更高版本。这属于历史设备接入要求,不代表所有后续浏览器、Unity 和服务版本组合均已验证。本文档以 SDK 2.7.2 为基准,发布前应在实际目标环境测试。
页面的安全策略和部署协议也可能影响本地 WebSocket 连接;发生连接失败时,应结合浏览器错误信息检查,不能仅通过切换全屏判断集成成功。