版本: Unity 6 (6000.0)
语言英语
  • C#

EditorSceneManager.SaveScene

建议更改

成功!

感谢您帮助我们改进 Unity 文档的质量。虽然我们不能接受所有提交的内容,但我们确实会阅读用户提出的每一项更改建议,并在适当情况下进行更新。

关闭

提交失败

由于某种原因,您的更改建议无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们改进 Unity 文档的质量。

关闭

取消

声明

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

示例:
每 300 秒保存一次当前场景的简单编辑器窗口。

注意:无论场景是否标记为脏,都会保存场景。

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