コガネブログ

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

【Unity】選択中の複数のプレハブのインスタンスの変更を取り消すエディタ拡張

はじめに

f:id:baba_s:20171012120128p:plain

プレハブのインスタンスを複数選択した状態だと
Inspector に Revert ボタンが表示されず、一括で変更を取り消すことができません

そこで、一括で変更を取り消すことができるエディタ拡張を作成しました

ソースコード

using UnityEditor;
using UnityEditor.SceneManagement;

public static class MyEditor
{
    [MenuItem( "Toools/Revert Selection Prefab %&Z" )]
    private static void RevertSelectionPrefab()
    {
        var gameObjects = Selection.gameObjects;

        if ( gameObjects == null || gameObjects.Length <= 0 ) return;

        foreach ( var go in gameObjects )
        {
            PrefabUtility.RevertPrefabInstance( go );
        }

        EditorSceneManager.MarkSceneDirty( EditorSceneManager.GetActiveScene() );
    }
}

使い方

f:id:baba_s:20171012120338p:plain

上記のスクリプトを Unity の「Editor」フォルダに追加すると
Unity のメニューに「Tools>Revert Selection Prefab」が表示され、
この項目を選択すると選択中の複数のプレハブのインスタンスの変更を
一括で取り消すことができます

Ctrl + Alt + Z でも実行可能です