纳金网

标题: unity自动保存场景 [打印本页]

作者: 狂风大尉    时间: 2015-2-28 23:28
标题: unity自动保存场景

       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 }






欢迎光临 纳金网 (http://go.narkii.com/club/) Powered by Discuz! X2.5