目錄
- 一、StreamVR問(wèn)題:
- 1.運(yùn)行項(xiàng)目時(shí)不顯示手柄控制器:
- 2.按鍵動(dòng)作檢測(cè)出現(xiàn)重復(fù)問(wèn)題:
- 3.Error during OpenVR Init: Init_InterfaceNotFound:
- 4.[SteamVR] Interface Not Found (105):
- 5.更新SteamVR時(shí)如果之前不小心刪除了SteamVR的本地文件
- 二、Unity問(wèn)題:
- 1.檢測(cè)射線是否在UI之上(用于避免模型與UI互相干擾)
- 2.VS2019調(diào)試unity項(xiàng)目:
- 3.Unity 加載項(xiàng)目時(shí)出現(xiàn)“package manager error”:
- 4.燈光烘焙?jiǎn)栴}:
- 5.物體旋轉(zhuǎn)問(wèn)題:
- 6.UGUI中無(wú)法觸發(fā)事件(比如Button的點(diǎn)擊)問(wèn)題:
一、StreamVR問(wèn)題:
1.運(yùn)行項(xiàng)目時(shí)不顯示手柄控制器:
出現(xiàn)這種情況一般會(huì)在頭顯中提示不能加載按鍵配置文件,出現(xiàn)這種提示時(shí)請(qǐng)直接打開(kāi)steam(注意不是steamVR哈),按照我的了解應(yīng)該是按鍵配置文件是存儲(chǔ)在Steam上面的,不過(guò)項(xiàng)目發(fā)布以后就不會(huì)出現(xiàn)這種問(wèn)題了。
2.按鍵動(dòng)作檢測(cè)出現(xiàn)重復(fù)問(wèn)題:
出現(xiàn)這種問(wèn)題應(yīng)該是現(xiàn)在的插件本身的問(wèn)題,比如檢測(cè)按鍵抬起或者按鍵按下經(jīng)常會(huì)出現(xiàn)觸發(fā)兩次的情況,目前的解決方案是設(shè)置一個(gè)Bool值,按下的時(shí)候設(shè)為true,抬起的時(shí)候設(shè)為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:
這個(gè)問(wèn)題應(yīng)該是SteamVR與OpenCV(1.0.0版)的兼容問(wèn)題,直接通過(guò)Steam更新SteamVR(我這邊是更新到1.15.19),之后就沒(méi)有這個(gè)問(wèn)題了~
4.[SteamVR] Interface Not Found (105):
這個(gè)問(wèn)題還是SteamVR版本的問(wèn)題,最少SteamVR1.15.19是有此問(wèn)題的,出現(xiàn)這個(gè)問(wèn)題的時(shí)候手柄是顯示不出來(lái)的
http://steamcommunity.com/app/250820/discussions/0/133259227526422836/
![](/d/20211017/1d91c70a6ae8a4ec27477cbf54e17b87.gif)
![](/d/20211017/5e602ede96e5b38e103be9c5b9c391a3.gif)
可以更新到beta版解決此問(wèn)題,更新方法如下,目前更新到1.16.4版就解決了這個(gè)問(wèn)題:
![](/d/20211017/39ca2cdb86ba89d6ceb54e76ece55fc9.gif)
![](/d/20211017/be4e450e7870e17a9c8525419db3e2f5.gif)
5.更新SteamVR時(shí)如果之前不小心刪除了SteamVR的本地文件
執(zhí)行“運(yùn)行”或“更新”時(shí)就會(huì)出現(xiàn)錯(cuò)誤,這是可以通過(guò)下面的步驟重新安裝SteamVR:
![](/d/20211017/8f753a9cc0c7446a0d86a32eaef84fce.gif)
![](/d/20211017/3f3b705f0ad426e0e018fff12bf35a82.gif)
二、Unity問(wèn)題:
1.檢測(cè)射線是否在UI之上(用于避免模型與UI互相干擾)
注意此方法用在FixedUpdate中比較靠譜,若在Update中檢測(cè)在webgl平臺(tái)時(shí)不能及時(shí)檢測(cè)到:
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上時(shí)觸發(fā)下方功能
···
}
2.VS2019調(diào)試unity項(xiàng)目:
在頂部菜單欄中“調(diào)試”->“附加到Unity調(diào)試程序”
![](/d/20211017/efe84e689c253de35ff9fa378cc6710c.gif)
3.Unity 加載項(xiàng)目時(shí)出現(xiàn)“package manager error”:
- ①可以關(guān)閉防火墻(設(shè)置白名單是沒(méi)用的)之后重啟電腦便可解決,等打開(kāi)unity項(xiàng)目后可以再打開(kāi)防火墻。
- ②可以斷開(kāi)網(wǎng)絡(luò),重啟電腦后在離線模式下打開(kāi)unity,之后再連接網(wǎng)絡(luò)。
4.燈光烘焙?jiǎn)栴}:
①Directional 直射光也是可以用于烘焙的,但是屬于全局光,如果用于室內(nèi)烘焙會(huì)被房間的墻壁遮擋,因此烘焙出來(lái)的室內(nèi)雖然也會(huì)有一定的亮度,但是關(guān)閉實(shí)時(shí)光照后處于室內(nèi)的可移動(dòng)物品就全部變?yōu)楹谏o(wú)光狀態(tài))。
②室內(nèi)盡量使用點(diǎn)光源(PointLight)或者聚光燈光源(SpotLight)來(lái)進(jìn)行烘焙,可以烘焙的亮一些,然后通過(guò)調(diào)整貼圖的亮度來(lái)控制光線的亮度。
5.物體旋轉(zhuǎn)問(wèn)題:
通過(guò)eulerAngles進(jìn)行物體旋轉(zhuǎn)的時(shí)候會(huì)出現(xiàn)萬(wàn)向鎖的情況,但是直接用Quaternion計(jì)算坐標(biāo)又很麻煩,可以通過(guò)Quaternion.Euler()方法將eulerAngles轉(zhuǎn)換為Quaternion來(lái)解決此問(wèn)題
Quaternion _angle = Quaternion.Euler(new Vector3(0,45,0));
transform.rotation = _angle;
6.UGUI中無(wú)法觸發(fā)事件(比如Button的點(diǎn)擊)問(wèn)題:
注意一下此UI控件所在Canvas中的EventCamera是否為空,因?yàn)槭录挠|發(fā)是基于攝像機(jī)發(fā)出的射線,若不為空此Canvas下面的所有UI控件的事件觸發(fā)都會(huì)基于此攝像機(jī),將此值設(shè)為空后將會(huì)默認(rèn)由主攝像機(jī)(MainCamera)觸發(fā)事件。
您可能感興趣的文章:- Unity實(shí)現(xiàn)VR中在黑板上寫(xiě)字效果
- Unity3D基于陀螺儀實(shí)現(xiàn)VR相機(jī)功能