質問編集履歴
1
成功した方法の追記
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
|
+
```
|