Unity之自动保存场景

转“Unity插件研究院之自动保存场景” 

unity编辑器出现闪退并且刚编辑完场景没来得及保存的问题。

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

贴上此代码,放到\Assets\Editor下

然后在unity界面的Window下寻找到AutoSave就可以啦

然后他就会隔了时间给你保存下还提示下(提示也可以选择性的啦)

还有在unity界面LayerOut上还可以Save Layerout.

 

转载于:https://www.cnblogs.com/cathytong/p/4674188.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值