VRCheck.cs 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. using System.Collections.Generic;
  2. using UnityEngine;
  3. using UnityEditor;
  4. using UnityEngine.XR;
  5. namespace HighlightPlus {
  6. public static class VRCheck {
  7. #if UNITY_2019_3_OR_NEWER
  8. static List<XRDisplaySubsystemDescriptor> displaysDescs = new List<XRDisplaySubsystemDescriptor>();
  9. static List<XRDisplaySubsystem> displays = new List<XRDisplaySubsystem>();
  10. public static bool IsActive() {
  11. displaysDescs.Clear();
  12. SubsystemManager.GetSubsystemDescriptors(displaysDescs);
  13. // If there are registered display descriptors that is a good indication that VR is most likely "enabled"
  14. return displaysDescs.Count > 0;
  15. }
  16. public static bool IsVrRunning() {
  17. bool vrIsRunning = false;
  18. displays.Clear();
  19. SubsystemManager.GetInstances(displays);
  20. foreach (var displaySubsystem in displays) {
  21. if (displaySubsystem.running) {
  22. vrIsRunning = true;
  23. break;
  24. }
  25. }
  26. return vrIsRunning;
  27. }
  28. #else
  29. public static bool IsActive() {
  30. return PlayerSettings.virtualRealitySupported;
  31. }
  32. public static bool IsVrRunning() {
  33. return Application.isPlaying && PlayerSettings.virtualRealitySupported;
  34. }
  35. #endif
  36. }
  37. }