コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】ゲームオブジェクトを Scene ビューに表示するかどうかを変更できる「SceneVisibilityManager」

概要

using UnityEditor;
using UnityEngine;
using UnityEngine.SceneManagement;

public static class Example
{
    // すべてのゲームオブジェクトを Scene ビューで非表示にします
    [MenuItem( "SceneVisibilityManager/HideAll" )]
    private static void HideAll()
    {
        SceneVisibilityManager.instance.HideAll();
        EditorApplication.RepaintHierarchyWindow();
    }
    
    // すべてのゲームオブジェクトを Scene ビューに表示します
    [MenuItem( "SceneVisibilityManager/ShowAll" )]
    private static void ShowAll()
    {
        SceneVisibilityManager.instance.ShowAll();
        EditorApplication.RepaintHierarchyWindow();
    }
    
    // 指定したシーン内のゲームオブジェクトを Scene ビューで非表示にします
    [MenuItem( "SceneVisibilityManager/HideScene" )]
    private static void HideScene()
    {
        var scene = SceneManager.GetActiveScene();
        SceneVisibilityManager.instance.Hide( scene );
        EditorApplication.RepaintHierarchyWindow();
    }
    
    // 指定したシーン内のゲームオブジェクトを Scene ビューに表示します
    [MenuItem( "SceneVisibilityManager/ShowScene" )]
    private static void ShowScene()
    {
        var scene = SceneManager.GetActiveScene();
        SceneVisibilityManager.instance.Show( scene );
        EditorApplication.RepaintHierarchyWindow();
    }
    
    // 指定したゲームオブジェクトと子オブジェクトを Scene ビューで非表示にします
    [MenuItem( "SceneVisibilityManager/HideGameObject" )]
    private static void HideGameObject()
    {
        var gameObject = GameObject.Find( "Hoge" );
        SceneVisibilityManager.instance.Hide( gameObject, true );
        EditorApplication.RepaintHierarchyWindow();
    }
    
    // 指定したゲームオブジェクトと子オブジェクトを Scene ビューに表示します
    [MenuItem( "SceneVisibilityManager/ShowGameObject" )]
    private static void ShowGameObject()
    {
        var gameObject = GameObject.Find( "Hoge" );
        SceneVisibilityManager.instance.Show( gameObject, true );
        EditorApplication.RepaintHierarchyWindow();
    }
}

SceneVisibilityManager クラスを使用することで
ゲームオブジェクトを Scene ビューに表示するかどうかを変更できます