目录

前言

一、WebXR是什么?

二、使用步骤

1.引WebXR工具

2.webxr的使用

4.出包

总结


前言

因公司需要学习Unity 网页Vr项目,最终选择使用WebXr工具,算第三方的支持Unity Webgl的Vr工具.可以实现使用unity打包,最终在网页上支持Vr模式和普通的网页模式.


提示:以下是本篇文章正文内容,下面案例可供参考

一、WebXR是什么?

是Web上用于VR和AR的新的跨浏览器API。Unity是构建跨平台体验的绝佳工具,可以在网页浏览器是实现Vr游戏,因为支持Unity,不需要去换开发工具,开发网页vr,对于原unity工作者是一个号工具.具体的说明文档看一下,也没啥用.

https://blog.mozvr.com/unity-webxr-exporter-update/

二、使用步骤

1.引WebXR工具

1.可以从Unity官方商店下载,最新版的工具已经在商店上线,

2.可以从github上下载,这上面的可能比商店里面的更新快一点.而且github上面有工具使用的步骤,和一些要注意的事项.推荐看一下.

github:https://github.com/MozillaReality/unity-webxr-export

2.webxr的使用

1.Webxr是网页Vr,所以在开发前要做一些准备工作:Unity,WebGl支持,同时引入Pc端的VR类支持. 

如果不知道的可以找到下图这样的图片点击小圈画起来的就行了.到这就可以在unity上使用vr设备跑WebXR官方例子了.

unity项目转H5 unity3d可以转化为web游戏吗_unity项目转H5

2.打开官方案例WebXR场景,因为官方场景使用的是Urp渲染方式,会有一些模型的渲染材质shader丢失,重新设置一个材质就行了.

unity项目转H5 unity3d可以转化为web游戏吗_web_02

可以在场景中的WebXRCameraSet上面找到WebXRManager里面的DefaultHeight参数设置头盔高度.

unity项目转H5 unity3d可以转化为web游戏吗_unity项目转H5_03

3.webxr相机

WebXRCameraSet 是webxr的相机和手柄的父物体,把他拖入到新建场景里面就可以在新场景启用Vr相机和手柄了.

4.手柄:

官方案例只给了一个简单的操作实例,就是手柄跟台上小方块的交互.用的是触发检测.打开WebXRManager下的handr手柄可以看到里面绑定有WebXrController和DesertControllerInteraction两个脚本,

其中WebXrController脚本:是区分左右手的,和绑定不同的手柄按钮触发方式,其中InputMap里面的是官方写好的,也可以自己写,里面绑定的映射,官方给的也有,如果官方给的案例手柄不能用,

你必须用Mozilla提供的内容替换文件

ProjectSettings/InputManager.asset

下载地址:https://raw.githubusercontent.com/MozillaReality/unity-webxr-export/master/ProjectSettings/InputManager.asset

请记住,你必须在Unity外部执行此操作,因为项目设置位于Assets文件夹外部。ProjectSettings文件夹内,可以使用文件资源管理器替换整个文件,或使用记事本++替换其内容。(这个文件可以在webxr的github里面找到)

unity项目转H5 unity3d可以转化为web游戏吗_github_04

 

DesertControllerInteraction:是案例给的手柄交互案例脚本:其中Update里面是手柄按钮点击,播放手柄动画的方法,所以我们可以官方的设置,替换到官方不咋好看的手柄模型.

void Update()
    {
        float normalizedTime = controller.GetButton("Trigger") ? 1 : controller.GetAxis("Grip");

        if (controller.GetButtonDown("Trigger") || controller.GetButtonDown("Grip"))
            Pickup();

        if (controller.GetButtonUp("Trigger") || controller.GetButtonUp("Grip"))
            Drop();

        // Use the controller button or axis position to manipulate the playback time for hand model.
        //播放手柄动画
        anim.Play("Take", -1, normalizedTime);
    }

官方没有给webxr手柄通过射线跟UI交互的方式,我这边是没有找到可以兼容ui射线交互的插件,直接写了一个小的Button与射线的交互脚本,勉强能用.

4.出包

WebXR需要打出一个包,放到服务器然后使用链接在网页打开,打包是需要选择WebXR的模板,工具里面的模板会自动调用Web端的Api去判断是浏览器否支持Vr设备,在WebGLTemplates文件夹WebXR里面的index脚本,有兴趣可以看下.

unity项目转H5 unity3d可以转化为web游戏吗_github_05

打出来的包本地测试可以直接选择Build and run,在不同的浏览器下支持不同的vr设备,如果浏览器下没有打开vr模式的按钮,可以检查一下当前浏览器跟链接的Vr设备牌子是否匹配,可以在https://github.com/MozillaReality/unity-webxr-export里面查看浏览器对应的vr设备.

 

部署服务器的,需要跨域打开软件的网址链接需要https加密链接,才能调用vr设备,一定要Https加密链接.


总结

官方教程:https://github.com/MozillaReality/unity-webxr-export/blob/master/docs/project-setup.md