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