原文: http://wiki.unity3d.com/index.php?title=AutoSave
  最近发现Unity老有自动崩溃的BUG。 每次崩溃的时候由于项目没有保存所以Hierarchy视图游戏对象与游戏资源的关系就会丢失。所以想到自动保存场景。
  本来想自己写一个这样的脚本,但是发现维基百科上已经有了。。。

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

1323368sngznpqnzx5gntn.png
为了方便你还可以把这个布局保存起来,方便下次使用。。
132336cibcn98oh3ryuc1a.png
锐亚教育

锐亚教育,游戏开发论坛|游戏制作人|游戏策划|游戏开发|独立游戏|游戏产业|游戏研发|游戏运营| unity|unity3d|unity3d官网|unity3d 教程|金融帝国3|8k8k8k|mcafee8.5i|游戏蛮牛|蛮牛 unity|蛮牛