teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

成功した方法の追記

2020/09/01 14:58

投稿

yuraoka
yuraoka

スコア3

title CHANGED
File without changes
body CHANGED
@@ -41,4 +41,46 @@
41
41
  # まとめ
42
42
  以上、XR Plugin Managementを利用したVRアプリでVRモードと通常モードを切り替えたい。という質問になります。
43
43
  ヒントや予想だけでも頂けると幸いです。
44
- よろしくお願い致します。
44
+ よろしくお願い致します。
45
+
46
+ # 追記
47
+
48
+ モードの切り替えができたので方法を記しておきます。
49
+ ```
50
+ // AssemblyDefinitionが分かれている場合はUnity.XR.Managementアセンブリを参照に加えるとusingできます。
51
+ using UnityEngine.XR.Management;
52
+ ```
53
+
54
+ VR有効化
55
+ ```
56
+ var manager = XRGeneralSettings.Instance.Manager;
57
+
58
+
59
+ // 旧バージョンと違って画面の回転は自動で行わないので自前で行う必要があります。
60
+ // 画面の回転が完了する前にVRモードを始めてしまうと表示がおかしくなるので回転完了を待機しています。
61
+ Screen.orientation = ScreenOrientation.LandscapeLeft;
62
+ while (Screen.orientation != ScreenOrientation.LandscapeLeft)
63
+ {
64
+ yield return null;
65
+ }
66
+
67
+
68
+ // manager.DeinitializeLoaderを呼んでから再度InitializeLoaderを呼ぶとAndroidでクラッシュします。
69
+ // そのため一度InitializeLoaderを呼び出したらDeinitializeLoaderもInitializeLoaderも呼ばないようにします。
70
+ if (!manager.isInitializationComplete)
71
+ {
72
+ yield return manager.InitializeLoader();
73
+ }
74
+
75
+
76
+ manager.StartSubsystems();
77
+ ```
78
+
79
+ VR無効化
80
+ ```
81
+ // VRモードを終了する際は特に特殊な設定は必要ありません。
82
+ // VR開始時に書きましたがDeinitializeLoaderを呼ばないようにだけ注意します。
83
+ var manager = XRGeneralSettings.Instance.Manager;
84
+ Screen.orientation = ScreenOrientation.Portrait;
85
+ manager.StopSubsystems();
86
+ ```