Unity自动保存场景脚本

Unity自动保存场景脚本

原文: http://wiki.unity3d.com/index.php/AutoSave
AutoSave.cs
using UnityEngine;
using UnityEditor;
using System;
 
public class AutoSave : EditorWindow {
 
	private bool autoSaveScene = true;
	private bool showMessage = true;
	private bool isStarted = false;
	private int intervalScene;	
	private DateTime lastSaveTimeScene = DateTime.Now;
 
	private string projectPath = Application.dataPath;
	private string scenePath;
 
	[MenuItem ("Window/AutoSave")]
	static void Init () {
		AutoSave saveWindow = (AutoSave)EditorWindow.GetWindow (typeof (AutoSave));
		saveWindow.Show();
	}
 
	void OnGUI () {	
		GUILayout.Label ("Info:", EditorStyles.boldLabel);
		EditorGUILayout.LabelField ("Saving to:", ""+projectPath);
		EditorGUILayout.LabelField ("Saving scene:", ""+scenePath);
		GUILayout.Label ("Options:", EditorStyles.boldLabel);
		autoSaveScene = EditorGUILayout.BeginToggleGroup ("Auto save", autoSaveScene);
		intervalScene = EditorGUILayout.IntSlider ("Interval (minutes)", intervalScene, 1, 10);
		if(isStarted) {
			EditorGUILayout.LabelField ("Last save:", ""+lastSaveTimeScene);
		}
		EditorGUILayout.EndToggleGroup();
		showMessage = EditorGUILayout.BeginToggleGroup ("Show Message", showMessage);
		EditorGUILayout.EndToggleGroup ();
	}
 
 
	void Update(){
		scenePath = EditorApplication.currentScene;
		if(autoSaveScene) {
			if(DateTime.Now.Minute >= (lastSaveTimeScene.Minute+intervalScene) || DateTime.Now.Minute == 59 && DateTime.Now.Second == 59){
				saveScene();
			}
		} else {
			isStarted = false;
		}
 
	}
 
	void saveScene() {
		EditorApplication.SaveScene(scenePath);
		lastSaveTimeScene = DateTime.Now;
		isStarted = true;
		if(showMessage){
			Debug.Log("AutoSave saved: "+scenePath+" on "+lastSaveTimeScene);
		}
		AutoSave repaintSaveWindow = (AutoSave)EditorWindow.GetWindow (typeof (AutoSave));
		repaintSaveWindow.Repaint();
	}
}

将脚本放在 Assets/Editor 目录下,这时候会在Windows菜单下面添加一个子菜单autosave
激活 Windows->autosave
Unity自动保存场景脚本_第1张图片
这时候会弹出AutoSave窗口
Unity自动保存场景脚本_第2张图片
可以设置保存的频率 , 是否在控制台打印保存Log等

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