e.blog

主にUnity/UE周りのことについてまとめていきます

MenuItemでVR Supportedを切り替える

概要

やってることはただのMenuItemのEditorスクリプトですが。
UNETなどネットワーク対応のコンテンツを作っていると、複数のエディタを立ち上げてネットワーク経由でのやり取りをデバッグしたくなることが多々あります。

(ちなみに、同一プロジェクトを複数エディタで機動する方法がテラシュールブログさんで紹介されています。これを使うとネットワーク対応のコンテンツのデバッグが捗ります)

tsubakit1.hateblo.jp

ただ、VRコンテンツを制作しているとたんにエディタで同一プロジェクトを起動しただけではうまく行きません。
というのも、HMDを利用できるのはひとつのアプリだけなので、あとから再生したエディタのほうにHMDが奪われてしまい、最初に再生していたエディタは強制的に再生がストップしてしまいます。

なので、Player SettingsのVirtual Reality Supportedのチェックをオフにすれば問題は解消されますが、そのオン・オフが地味にめんどい。
ということで、今回のスクリプトを書くに至ったわけです。

これをEditorフォルダにおけば、あとはToolsメニューからオン・オフが手軽に行えるようになります。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;

[InitializeOnLoad]
public static class VirtualRealitySupportedMenu
{
    private const string MENU_NAME = "Tools/VirtualSupported";

    static VirtualRealitySupportedMenu()
    {
        EditorApplication.update += () =>
        {
            ImplToggleSupported(PlayerSettings.virtualRealitySupported);
        };
    }

    [MenuItem(MENU_NAME)]
    static void ToggleSupported()
    {
        ImplToggleSupported(!PlayerSettings.virtualRealitySupported);
    }

    static void ImplToggleSupported(bool enabled)
    {
        // Switch VR enable setting.
        PlayerSettings.virtualRealitySupported = enabled;

        // Set checkmark to menu item.
        Menu.SetChecked(MENU_NAME, enabled);
    }
}