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

作者:LOONGV 时间:2023-04-05 15:23:50 

一、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/

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

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

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

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

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

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

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

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

二、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调试程序”

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

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)触发事件。

来源:https://blog.csdn.net/u013032852/article/details/90297916

标签:Unity,VR
0
投稿

猜你喜欢

  • Insert into与AddNew哪一个更好?

    2009-10-28 18:30:00
  • 优化mysql数据库的经验总结

    2024-01-17 23:56:24
  • MySQL启动连接的命令以及与PHP程序连接的基本语法

    2023-11-14 22:27:26
  • 原生js实现密码强度验证功能

    2024-04-17 10:35:14
  • 使用python BeautifulSoup库抓取58手机维修信息

    2022-08-10 01:55:20
  • python迭代器自定义类的具体方法

    2023-07-08 06:17:30
  • 解决MySQL 5数据库连接超时问题

    2009-03-25 15:24:00
  • Python实现PDF转换文本详解

    2022-09-04 13:40:52
  • 解决python 出现unknown encoding: idna 的问题

    2023-10-06 21:26:06
  • Go语言实现AOI区域视野管理流程详解

    2023-06-20 03:21:51
  • 使用python对视频文件分辨率进行分组的实例代码

    2022-06-06 21:16:44
  • Python使用cookielib模块操作cookie的实例教程

    2021-12-21 09:18:57
  • Python基于列表list实现的CRUD操作功能示例

    2022-06-15 16:02:14
  • ACCESS入门教程:窗口和菜单的使用

    2008-01-03 20:15:00
  • python实现生成字符串大小写字母和数字的各种组合

    2021-02-09 07:33:00
  • MySQL数据库的高可用方案总结

    2024-01-15 14:47:43
  • Python代码集pathlib应用之获取指定目录下的所有文件

    2023-09-06 23:44:39
  • 使用python如何提取JSON数据指定内容

    2022-08-06 23:48:41
  • oracle 安装与SQLPLUS简单用法

    2009-06-10 17:49:00
  • Golang中omitempty关键字的具体实现

    2024-04-25 15:12:55
  • asp之家 网络编程 m.aspxhome.com