Unity自动保存场景脚本

来源:互联网 发布:b站语梨 知乎 编辑:程序博客网 时间:2024/06/06 06:10

Unity自动保存场景脚本

原文:http://wiki.unity3d.com/index.php/AutoSave
AutoSave.cs
using UnityEngine;using UnityEditor;using System; public class AutoSave : EditorWindow { private bool autoSaveScene = true;private bool showMessage = true;private bool isStarted = false;private int intervalScene;private DateTime lastSaveTimeScene = DateTime.Now; private string projectPath = Application.dataPath;private string scenePath; [MenuItem ("Window/AutoSave")]static void Init () {AutoSave saveWindow = (AutoSave)EditorWindow.GetWindow (typeof (AutoSave));saveWindow.Show();} void OnGUI () {GUILayout.Label ("Info:", EditorStyles.boldLabel);EditorGUILayout.LabelField ("Saving to:", ""+projectPath);EditorGUILayout.LabelField ("Saving scene:", ""+scenePath);GUILayout.Label ("Options:", EditorStyles.boldLabel);autoSaveScene = EditorGUILayout.BeginToggleGroup ("Auto save", autoSaveScene);intervalScene = EditorGUILayout.IntSlider ("Interval (minutes)", intervalScene, 1, 10);if(isStarted) {EditorGUILayout.LabelField ("Last save:", ""+lastSaveTimeScene);}EditorGUILayout.EndToggleGroup();showMessage = EditorGUILayout.BeginToggleGroup ("Show Message", showMessage);EditorGUILayout.EndToggleGroup ();}  void Update(){scenePath = EditorApplication.currentScene;if(autoSaveScene) {if(DateTime.Now.Minute >= (lastSaveTimeScene.Minute+intervalScene) || DateTime.Now.Minute == 59 && DateTime.Now.Second == 59){saveScene();}} else {isStarted = false;} } void saveScene() {EditorApplication.SaveScene(scenePath);lastSaveTimeScene = DateTime.Now;isStarted = true;if(showMessage){Debug.Log("AutoSave saved: "+scenePath+" on "+lastSaveTimeScene);}AutoSave repaintSaveWindow = (AutoSave)EditorWindow.GetWindow (typeof (AutoSave));repaintSaveWindow.Repaint();}}

将脚本放在 Assets/Editor 目录下,这时候会在Windows菜单下面添加一个子菜单autosave
激活 Windows->autosave

这时候会弹出AutoSave窗口

可以设置保存的频率 , 是否在控制台打印保存Log等

0 0
原创粉丝点击