質問編集履歴

1

成功した方法の追記

2020/09/01 14:58

投稿

yuraoka
yuraoka

スコア3

test CHANGED
File without changes
test CHANGED
@@ -85,3 +85,87 @@
85
85
  ヒントや予想だけでも頂けると幸いです。
86
86
 
87
87
  よろしくお願い致します。
88
+
89
+
90
+
91
+ # 追記
92
+
93
+
94
+
95
+ モードの切り替えができたので方法を記しておきます。
96
+
97
+ ```
98
+
99
+ // AssemblyDefinitionが分かれている場合はUnity.XR.Managementアセンブリを参照に加えるとusingできます。
100
+
101
+ using UnityEngine.XR.Management;
102
+
103
+ ```
104
+
105
+
106
+
107
+ VR有効化
108
+
109
+ ```
110
+
111
+ var manager = XRGeneralSettings.Instance.Manager;
112
+
113
+
114
+
115
+
116
+
117
+ // 旧バージョンと違って画面の回転は自動で行わないので自前で行う必要があります。
118
+
119
+ // 画面の回転が完了する前にVRモードを始めてしまうと表示がおかしくなるので回転完了を待機しています。
120
+
121
+ Screen.orientation = ScreenOrientation.LandscapeLeft;
122
+
123
+ while (Screen.orientation != ScreenOrientation.LandscapeLeft)
124
+
125
+ {
126
+
127
+ yield return null;
128
+
129
+ }
130
+
131
+
132
+
133
+
134
+
135
+ // manager.DeinitializeLoaderを呼んでから再度InitializeLoaderを呼ぶとAndroidでクラッシュします。
136
+
137
+ // そのため一度InitializeLoaderを呼び出したらDeinitializeLoaderもInitializeLoaderも呼ばないようにします。
138
+
139
+ if (!manager.isInitializationComplete)
140
+
141
+ {
142
+
143
+ yield return manager.InitializeLoader();
144
+
145
+ }
146
+
147
+
148
+
149
+
150
+
151
+ manager.StartSubsystems();
152
+
153
+ ```
154
+
155
+
156
+
157
+ VR無効化
158
+
159
+ ```
160
+
161
+ // VRモードを終了する際は特に特殊な設定は必要ありません。
162
+
163
+ // VR開始時に書きましたがDeinitializeLoaderを呼ばないようにだけ注意します。
164
+
165
+ var manager = XRGeneralSettings.Instance.Manager;
166
+
167
+ Screen.orientation = ScreenOrientation.Portrait;
168
+
169
+ manager.StopSubsystems();
170
+
171
+ ```