自动保存场景

 1 using UnityEngine;
 2 using UnityEditor;
 3 using System;
 4  
 5 public class AutoSave : EditorWindow {
 6  
 7     private bool autoSaveScene = true;
 8     private bool showMessage = true;
 9     private bool isStarted = false;
10     private int intervalScene; 
11     private DateTime lastSaveTimeScene = DateTime.Now;
12  
13     private string projectPath = Application.dataPath;
14     private string scenePath;
15  
16     [MenuItem ("Window/AutoSave")]
17     static void Init () {
18         AutoSave saveWindow = (AutoSave)EditorWindow.GetWindow (typeof (AutoSave));
19         saveWindow.Show();
20     }
21  
22     void OnGUI () {
23         GUILayout.Label ("Info:", EditorStyles.boldLabel);
24         EditorGUILayout.LabelField ("Saving to:", ""+projectPath);
25         EditorGUILayout.LabelField ("Saving scene:", ""+scenePath);
26         GUILayout.Label ("Options:", EditorStyles.boldLabel);
27         autoSaveScene = EditorGUILayout.BeginToggleGroup ("Auto save", autoSaveScene);
28         intervalScene = EditorGUILayout.IntSlider ("Interval (minutes)", intervalScene, 1, 10);
29         if(isStarted) {
30             EditorGUILayout.LabelField ("Last save:", ""+lastSaveTimeScene);
31         }
32         EditorGUILayout.EndToggleGroup();
33         showMessage = EditorGUILayout.BeginToggleGroup ("Show Message", showMessage);
34         EditorGUILayout.EndToggleGroup ();
35     }
36  
37     void Update(){
38         scenePath = EditorApplication.currentScene;
39         if(autoSaveScene) {
40             if(DateTime.Now.Minute >= (lastSaveTimeScene.Minute+intervalScene) || DateTime.Now.Minute == 59 && DateTime.Now.Second == 59){
41                 saveScene();
42             }
43         } else {
44             isStarted = false;
45         }
46  
47     }
48  
49     void saveScene() {
50         EditorApplication.SaveScene(scenePath);
51         lastSaveTimeScene = DateTime.Now;
52         isStarted = true;
53         if(showMessage){
54             Debug.Log("AutoSave saved: "+scenePath+" on "+lastSaveTimeScene);
55         }
56         AutoSave repaintSaveWindow = (AutoSave)EditorWindow.GetWindow (typeof (AutoSave));
57         repaintSaveWindow.Repaint();
58     }
59 }

 

你可能感兴趣的:(自动保存场景)