using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEditor;
using UnityEditor.SceneManagement;
public class Sample
{
[MenuItem("MyTools/Sample")]
public static void Main()
{
// 変更処理
var root = new GameObject("Root");
var gameObjects = (GameObject[])Object.FindObjectsOfType(typeof(GameObject));
foreach(var obj in gameObjects)
{
obj.transform.SetParent(root.transform);
}
// 終了
// シーンの取得
var currentScene = SceneManager.GetActiveScene();
// 変更したことを知らせる。
EditorSceneManager.MarkSceneDirty(currentScene);
// 変更を保存する。
EditorSceneManager.SaveScene(currentScene);
}
}
Dirtyの簡単な説明
Unityではデータが変更されているが、ディスクには保存されておらず保存する必要がある場合にダーティフラグを使用します。
参考
https://docs.unity3d.com/jp/460/ScriptReference/EditorUtility.SetDirty.html