Объявление
public static bool SaveScene(SceneManagement.Scene scene, string dstScenePath = "", bool saveAsCopy = false);Параметры
scene | Сцена для сохранения. |
dstScenePath | Путь к файлу для сохранения сцены. Если путь пуст, текущая открытая сцена перезаписывается. Если он еще не был сохранен, отображается диалоговое окно сохранения.. |
saveAsCopy | Если установлено значение true, сцена сохраняется без изменения текущей сцены и без очистки маркера несохраненных изменений. |
Возвращает
bool true, если сохранение прошло успешно, в противном случае — false.
Описание
Сохранить сцену.
Все пути относятся к папке проекта, например: "Assets/MyScenes/MyScene.unity". Папки, указанные в пути, должны уже существовать до вызова функции. Если путь не указан, используется путь к текущей открытой Сцене, за исключением случаев, когда она никогда ранее не сохранялась, и в этом случае отображается диалоговое окно сохранения.
Функция возвращает false, если сохранение не удалось. Это может произойти, если указанный путь недействителен или если пользователь отменяет в случае диалогового окна сохранения.
Смотрите так же: EditorSceneManager.GetActiveScene
Пример:
Примечание. Сцена сохраняется независимо от того, помечена она как грязная или нет.
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;
}
}
}