VRモードとノーマルモードの切り替え
UnityでのVR対応を作るのは非常に簡単で、PlayerSettingsのOther SettingsからVirtual Reality SupportedをONにして、SDKにCardboardなどを入れればもうVRコンテンツになる。
Unity2017.2b3からはVRではなく、XRと名称が代わり、スクリプトのパッケージ名や、PlayerSettingsの項目も、XR Settingsへと移行。
現状の最新Google VR Unity SDK v1.7ですが、Unityに入っているものはv1.6。
VRと通常コンテンツの切り替えは、基本的には。
1 | VRSettings.enabled = !VRSettings.enabled; |
(2017.2b3からはXRSettings)
とすればOK。
ただ、これで成り立つのは
・起動直後からVRコンテンツ
・ノーマルコンテンツもVR同様の横向き
という条件になると思います。
両方のコンテンツを使う場合多くは起動時にノーマルモードだと思いますので、Virtual Reality SDKsにNoneを追加し、一番上に持っていきます。
Default OrientationはVirtual Reality SupportedがONの状態では変更できないので、ここをOFFにしてからPortraitにし、再びONにします。
あとは下にある参考サイトをもとにこんな感じでできました。
ちなみにUnity2017.2b3からはVRからXRにパッケージ名やクラス名が変わってますね。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | using System.Collections; using UnityEngine; using UnityEngine.VR; public class XRTest : MonoBehaviour { /// <summary> /// VRデバイス名。 /// </summary> static string DeviceCardboard = "Cardboard" ; static string DeviceNone = "None" ; /// <summary> /// Update. /// </summary> void Update() { // 画面タッチで切り替え if ( Input .GetMouseButtonDown ( 0 )) { ToggleXR (); } } /// <summary> /// XR切り替え。 /// </summary> void ToggleXR() { if (VRSettings.loadedDeviceName.ToLower() == XRTest.DeviceCardboard.ToLower()) { StartCoroutine(LoadDevice(XRTest.DeviceNone)); } else { StartCoroutine(LoadDevice(XRTest.DeviceCardboard)); } } /// <summary> /// VRデバイスのロード。 /// </summary> IEnumerator LoadDevice( string newDevice) { bool vrMode = newDevice != XRTest.DeviceNone; // VRの際にはここで切り替え if (vrMode) Screen .orientation = ScreenOrientation .LandscapeLeft; VRSettings.LoadDeviceByName(newDevice); yield return null ; VRSettings.enabled = vrMode; // ノーマルの際はここで切り替え if (!vrMode) Screen .orientation = ScreenOrientation .Portrait; } } |
参考)
Tales From The Rift | GoogleVR Cardboard: Switch between normal mode and VR mode at run-time
ギャップロ | Unity5.6からのGoogleVR SDKとの向き合い方
[…] VRモードとノーマルモードの切り替え / naochangblog […]
[…] VRモードとノーマルモードの切り替え / naochangblog […]