原文: http://wiki.unity3d.com/index.php?title=AutoSave
最近发现Unity老有自动崩溃的BUG。 每次崩溃的时候由于项目没有保存所以Hierarchy视图游戏对象与游戏资源的关系就会丢失。所以想到自动保存场景。
本来想自己写一个这样的脚本,但是发现维基百科上已经有了。。。
05 | public class AutoSave : EditorWindow { |
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; |
13 | private string projectPath = Application.dataPath; |
14 | private string scenePath; |
16 | [MenuItem ( "Window/AutoSave" )] |
18 | AutoSave saveWindow = (AutoSave)EditorWindow.GetWindow ( typeof (AutoSave)); |
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); |
30 | EditorGUILayout.LabelField ( "Last save:" , "" +lastSaveTimeScene); |
32 | EditorGUILayout.EndToggleGroup(); |
33 | showMessage = EditorGUILayout.BeginToggleGroup ( "Show Message" , showMessage); |
34 | EditorGUILayout.EndToggleGroup (); |
38 | scenePath = EditorApplication.currentScene; |
40 | if (DateTime.Now.Minute >= (lastSaveTimeScene.Minute+intervalScene) || DateTime.Now.Minute == 59 && DateTime.Now.Second == 59){ |
50 | EditorApplication.SaveScene(scenePath); |
51 | lastSaveTimeScene = DateTime.Now; |
54 | Debug.Log( "AutoSave saved: " +scenePath+ " on " +lastSaveTimeScene); |
56 | AutoSave repaintSaveWindow = (AutoSave)EditorWindow.GetWindow ( typeof (AutoSave)); |
57 | repaintSaveWindow.Repaint(); |
因为这个编辑窗口必须在激活状态,所以 你可以把它附属在某个窗口下面 比如Project视图。
![2_320_a155bad1a281d9f](http://www.xuanyusong.com/wp-content/uploads/2013/05/2_320_a155bad1a281d9f.png)
为了方便你还可以把这个布局保存起来,方便下次使用。。
![2_320_53108826434864f](http://www.xuanyusong.com/wp-content/uploads/2013/05/2_320_53108826434864f.png)