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/
可以更新到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)触发事件。
来源:https://blog.csdn.net/u013032852/article/details/90297916
猜你喜欢
- Microsoft Access 数据库 (.mdb) 文件大小2 G 字节。不
- 本文实例讲述了php查找指定目录下指定大小文件的方法。分享给大家供大家参考。具体实现方法如下:php查找文件大小的原理是遍历目录然后再利用f
- SvnPeer.php <?php /** * * This class for execute the external progr
- 发帖或者回帖的时候,系统会提示银两或经验增加的效果,慢慢出现又慢慢消失,用于取代对话框的那种是如何实现的?用google的jquery ap
- Iterable – 可迭代对象能够逐一返回其成员项的对象。 可迭代对象的例子包括所有序列类型 (例如 list, str 和 tuple)
- Python pip安装lxml出错的问题解决办法1. 在使用pip安装lxml过程中出现了一下错误: &
- 选择排序算法步骤:找到数组中最小的那个元素中,将它和数组的第一个元素交换位置,在剩下的元素中找到最小的元素,将它和数组的第二个元素交换位置,
- 目录WSGI基本原理1. WSGI处理过程2. WSGI示例3. WSGI web服务器和应用程序WSGI基本原理1. WSGI处理过程浏览
- 信息安全的核心就是数据库的安全,也就是说数据库加密是信息安全的核心问题。数据库数据的安全问题越来越受到重视,数据库加密技术的应用极大的解决了
- 这两个均是 python 的内建函数,通过读取控制台的输入与用户实现交互。但他们的功能不尽相同。举两个小例子。 >>> r
- 为标签添加背景图片import sysfrom PyQt5.QtGui import *from PyQt5.QtCore import *
- 这几天有这样一个需求,要将用户登陆系统的信息统计出来,做成一个报表。当用户登陆成功的时候,服务器会往日志文件里写一条像下面这种格式的记录:”
- 方法一,利用 sheet.iter_rows() 获取 Sheet1 表中的所有行,然后遍历import openpyxl wb = ope
- 模式库在模式库里,我将列出所有电子商务网站需要的模式.以下将罗列出经典常用的模式案例,我也试图让这些模式看起来更有趣味性与实用性。(Yaho
- 注:此功能依赖GD2图形库最近要用php生成缩略图,在网上找了一下,发现了这篇文章:PHP生成图片缩略图试用了一下后,发现有这样几个问题:1
- 目录1、概述2、__new__ 和 __init__ 的区别3、应用1:改变内置的不可变类型4、应用2:实现一个单例5、应用3:客户端缓存6
- 通过获取子图的label和线型来合并图例注意添加label#导入数据(读者可忽略)pre_lp=total_res#组合模型true=dif
- 先介绍下什么是协程:协程,又称微线程,纤程,英文名Coroutine。协程的作用,是在执行函数A时,可以随时中断,去执行函数B,然后中断继续
- 目录wtforms使用1(简单版):使用2(复杂版):wtforms安装:pip3 install wtforms使用1(简单版):from
- 每年的春节,都会有一些自己几乎没印象但父母就是很熟的亲戚,关系凌乱到你自己都说不清。今年趁着春节在家没事情干,正好之前知道有中国亲戚关系计算