Unity开发VR项目问题总结分析

 更新时间:2021年09月03日 11:52:39   作者:LOONGV  
本篇文章主要对Unity开发VR项目会遇到的一些问题总结,针对这些问题进行分析解决,有需要的朋友可以借鉴参考下,希望对大家有所帮助

一、StreamVR问题:

1.运行项目时不显示手柄控制器:

出现这种情况一般会在头显中提示不能加载按键配置文件,出现这种提示时请直接打开steam(注意不是steamVR哈),按照我的了解应该是按键配置文件是存储在Steam上面的,不过项目发布以后就不会出现这种问题了。

2.按键动作检测出现重复问题:

出现这种问题应该是现在的插件本身的问题,比如检测按键抬起或者按键按下经常会出现触发两次的情况,目前的解决方案是设置一个Bool值,按下的时候设为true,抬起的时候设为false

if (TrigerAction.GetStateDown(SteamVR_Input_Sources.RightHand))
        {
            if (!rightTriger)
            {
                rightTriger = true;
            }
        }
 
        if (TrigerAction.GetStateUp(SteamVR_Input_Sources.RightHand))
        {
            if (rightTriger)
            {
               rightTriger = false;
            }
        }

3.Error during OpenVR Init: Init_InterfaceNotFound:

这个问题应该是SteamVR与OpenCV(1.0.0版)的兼容问题,直接通过Steam更新SteamVR(我这边是更新到1.15.19),之后就没有这个问题了~

4.[SteamVR] Interface Not Found (105):

这个问题还是SteamVR版本的问题,最少SteamVR1.15.19是有此问题的,出现这个问题的时候手柄是显示不出来的

http://steamcommunity.com/app/250820/discussions/0/133259227526422836/

可以更新到beta版解决此问题,更新方法如下,目前更新到1.16.4版就解决了这个问题:

5.更新SteamVR时如果之前不小心删除了SteamVR的本地文件

执行“运行”或“更新”时就会出现错误,这是可以通过下面的步骤重新安装SteamVR:

二、Unity问题:

1.检测射线是否在UI之上(用于避免模型与UI互相干扰)

注意此方法用在FixedUpdate中比较靠谱,若在Update中检测在webgl平台时不能及时检测到:

void FixedUpdate()
{
    //射线处在UI之上
#if !(UNITY_EDITOR||UNITY_STANDALONE )
        if (Input.touchCount <= 0)
            return;
#endif
#if !(UNITY_EDITOR||UNITY_STANDALONE )
        if (EventSystem.current.IsPointerOverGameObject(Input.GetTouch(0).fingerId))
#else
        if (EventSystem.current.IsPointerOverGameObject())
#endif
            return;
    //射线不处于UI上时触发下方功能
    ···
}

2.VS2019调试unity项目:

在顶部菜单栏中“调试”->“附加到Unity调试程序”

3.Unity 加载项目时出现“package manager error”:

  • ①可以关闭防火墙(设置白名单是没用的)之后重启电脑便可解决,等打开unity项目后可以再打开防火墙。
  • ②可以断开网络,重启电脑后在离线模式下打开unity,之后再连接网络。

4.灯光烘焙问题:

①Directional 直射光也是可以用于烘焙的,但是属于全局光,如果用于室内烘焙会被房间的墙壁遮挡,因此烘焙出来的室内虽然也会有一定的亮度,但是关闭实时光照后处于室内的可移动物品就全部变为黑色(无光状态)。

②室内尽量使用点光源(PointLight)或者聚光灯光源(SpotLight)来进行烘焙,可以烘焙的亮一些,然后通过调整贴图的亮度来控制光线的亮度。

5.物体旋转问题:

通过eulerAngles进行物体旋转的时候会出现万向锁的情况,但是直接用Quaternion计算坐标又很麻烦,可以通过Quaternion.Euler()方法将eulerAngles转换为Quaternion来解决此问题

Quaternion _angle = Quaternion.Euler(new Vector3(0,45,0));
transform.rotation = _angle;

6.UGUI中无法触发事件(比如Button的点击)问题:

注意一下此UI控件所在Canvas中的EventCamera是否为空,因为事件的触发是基于摄像机发出的射线,若不为空此Canvas下面的所有UI控件的事件触发都会基于此摄像机,将此值设为空后将会默认由主摄像机(MainCamera)触发事件。

相关文章

  • 永久解决VSCode终端中文乱码问题

    永久解决VSCode终端中文乱码问题

    这篇文章主要介绍了永久解决VSCode终端中文乱码问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • Commitizen来规范代码提交信息使用技巧

    Commitizen来规范代码提交信息使用技巧

    这篇文章主要为大家介绍了Commitizen来规范代码提交信息使用技巧详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • scala中停止循环的三种方式(推荐)

    scala中停止循环的三种方式(推荐)

    这篇文章主要介绍了scala中停止循环的三种方式,文中给大家提到了循环语句的流程图,感兴趣的朋友可以参考下
    2019-12-12
  • VS Code快速生成html(头部)模板图文教程

    VS Code快速生成html(头部)模板图文教程

    这篇文章主要给大家介绍了关于VS Code快速生成html(头部)模板的相关资料,为了避免简单的重复劳动,借助VSCODE 快速生成文件头部,在项目搭建中体验非常舒适,需要的朋友可以参考下
    2023-11-11
  • windows开发记事本程序纪实(一)界面篇

    windows开发记事本程序纪实(一)界面篇

    这将是一个系列博文,后面会继续补充逻辑功能的开发的步骤。本节主要实现记事本的主界面设计,包括主界面窗口的构建、菜单的加入。虽然都是一些基本的操作,但是还是想将这些基本步骤完整地记录下来,以便后续验证。
    2014-08-08
  • 手机中点击网页链接实现拨号或保存电话功能实现代码

    手机中点击网页链接实现拨号或保存电话功能实现代码

    这篇文章主要介绍了手机中点击网页链接实现拨号或保存电话功能实现代码,需要的朋友可以参考下
    2015-04-04
  • jQuery会死吗?我为什么不用vue写富文本

    jQuery会死吗?我为什么不用vue写富文本

    jQuery会死吗?我为什么不用vue写富文本,本文通过文字实例代码相结合的形式给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-05-05
  • OpenAI 函数调用示例及功能入门教程

    OpenAI 函数调用示例及功能入门教程

    这篇文章主要为大家介绍了OpenAI 函数调用示例及功能入门教程详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06
  • 15个开发者必须知道的chrome技巧

    15个开发者必须知道的chrome技巧

    这篇文章主要介绍了15个开发者必须知道的chrome技巧,需要的朋友可以参考下
    2017-09-09
  • git如何从某个分支的指定历史版本中创建新分支

    git如何从某个分支的指定历史版本中创建新分支

    这篇文章主要介绍了git如何从某个分支的指定历史版本中创建新分支问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05

最新评论