Unity 6.3
0 онлайн 13 гостей 3 в системе
Вход

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; } } }