- 最后登录
- 2019-12-2
- 注册时间
- 2012-8-25
- 阅读权限
- 90
- 积分
- 34660
- 纳金币
- 38266
- 精华
- 111
|
01 using UnityEngine;
02 using UnityEditor;
03 using System;
04
05 public class AutoSave : EditorWindow {
06
07 private bool autoSaveScene = true;
08 private bool showMessage = true;
09 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 }
|
|