在 Unity 中检测 Oculus HMD

Gig*_*moi 5 c# unity-game-engine oculus

public Transform OculusPlayerPrefab;
public Transform DefaultPlayerPrefab;
void Start() {
    Transform player = OVRDevice.IsHMDPresent() ?
        (Transform)Instantiate(OculusPlayerPrefab) :
        (Transform)Instantiate(DefaultPlayerPrefab);
    player.position = transform.position;
}
Run Code Online (Sandbox Code Playgroud)

这应该检测 oculus rift HMD 是否已连接并实例化 oculus 播放器预制件,否则使用默认值。但是,IsHMDPresent()无论 Oculus Rift 是否连接,都会返回 false。然而,在 unity/oculus 集成包中,OVRMainMenu 使用 IsHMDPresent() 方法获得了预期的结果。

Yes*_*rry 2

从(至少)Unity 2018.2 开始,使用 Oculus Utilities,可以进行以下操作:

if (OVRManager.isHMDPresent) {
    // headset connected
}
Run Code Online (Sandbox Code Playgroud)

我要补充的是,您也可以订阅HMDMountedHMDUnmounted事件,这有些相关:

OVRManager.HMDMounted   += MyOnHMDMountedFunction();
OVRManager.HMDUnmounted += MyOnHMDUnmountedFunction();
Run Code Online (Sandbox Code Playgroud)

当您戴上(HMMDMounted)和/或取下(HMMDUnmounted)耳机时,这些将会触发。