EditorSceneManager.SaveScene
Declaration
public static bool SaveScene(SceneManagement.Scene scene, string dstScenePath = "", bool saveAsCopy = false);Параметры
| Параметр | Описание |
|---|---|
| сцена | Scene для сохранения. |
| dstScenePath | Путь к файлу для сохранения Scene. Если путь пуст, то текущий открытый файл Scene перезаписывается. Если он еще не сохранен, отображается диалог сохранения. |
| saveAsCopy | Если установлено значение true, то Scene сохраняется без изменения текущего Scene и без удаления маркера несохраненных изменений. |
Возвращаемое значение
логическое True, если сохранение было успешным, в противном случае false.
Описание
Сохранить Scene.
Все пути относятся к папке проекта, например: "Assets/MyScenes/MyScene.unity". Папка, указанная в пути, должна уже существовать до вызова функции. Если не указан путь, используется путь текущего открытого Scene, за исключением случаев, когда он никогда не сохранялся ранее, в этом случае отображается диалог сохранения.
Функция возвращает false, если сохранение не удалось. Это может произойти, если указанный путь является неверным или если пользователь отменяет диалог сохранения.
Дополнительные ресурсы: EditorSceneManager.GetActiveScene
Пример: 
Простое окно редактора, которое сохраняет каждые 300 секунд текущий Scene.
Примечание: Это сохраняет Scene независимо от того, помечен он как загрязненный или нет.
using UnityEditor; using UnityEngine; using System.Collections; using UnityEditor.SceneManagement;
public class SimpleAutoSave : EditorWindow { public float saveTime = 300; public float nextSave = 0; [MenuItem("Example/Simple autoSave")] static void Init() { SimpleAutoSave window = (SimpleAutoSave)EditorWindow.GetWindowWithRect(typeof(SimpleAutoSave), new Rect(0, 0, 200, 50)); window.Show(); }
void OnGUI() { EditorGUILayout.LabelField("Save Each:", saveTime + " Secs"); float timeToSave = nextSave - (float)EditorApplication.timeSinceStartup; EditorGUILayout.LabelField("Next Save:", timeToSave.ToString() + " Sec"); Repaint(); if (EditorApplication.timeSinceStartup > nextSave) { string[] path = EditorSceneManager.GetActiveScene().path.Split(char.Parse("/")); path[path.Length - 1] = "AutoSave_" + path[path.Length - 1]; bool saveOK = EditorSceneManager.SaveScene(EditorSceneManager.GetActiveScene(), string.Join("/", path)); Debug.Log("Saved Scene " + (saveOK ? "OK" : "Error!")); nextSave = (float)EditorApplication.timeSinceStartup + saveTime; } } }