zoukankan      html  css  js  c++  java
  • unity自动保存项目

    原文来自于:http://wiki.unity3d.com/index.php?title=AutoSave#C.23_-_AutoSave.cs      (奋斗的菜鸟_1029633680)

    很多时候,在编写项目时,遇见unity 的Buge导致强制退出,这时根本来不及保存hierarchy视图中的东西,这是一件很糟糕的事情,所以在今天看资料时,有幸的看到了这篇自动保存项目场景的源码。很是不错。

    源码如下:

    复制代码
    复制代码
     1 using UnityEngine;
     2 using UnityEditor;
     3 using System;
     4 
     5 public class AutoSave : EditorWindow
     6 {
     7 
     8     private bool autoSaveScene = true;
     9     private bool showMessage = true;
    10     private bool isStarted = false;
    11     private int intervalScene;
    12     private DateTime lastSaveTimeScene = DateTime.Now;
    13 
    14     private string projectPath = Application.dataPath;
    15     private string scenePath;
    16 
    17     [MenuItem("Window/AutoSave")]
    18     static void Init()
    19     {
    20         AutoSave saveWindow = (AutoSave)EditorWindow.GetWindow(typeof(AutoSave));
    21         saveWindow.Show();
    22     }
    23 
    24     void OnGUI()
    25     {
    26         GUILayout.Label("Info:", EditorStyles.boldLabel);
    27         EditorGUILayout.LabelField("Saving to:", "" + projectPath);
    28         EditorGUILayout.LabelField("Saving scene:", "" + scenePath);
    29         GUILayout.Label("Options:", EditorStyles.boldLabel);
    30         autoSaveScene = EditorGUILayout.BeginToggleGroup("Auto save", autoSaveScene);
    31         intervalScene = EditorGUILayout.IntSlider("Interval (minutes)", intervalScene, 1, 10);
    32         if (isStarted)
    33         {
    34             EditorGUILayout.LabelField("Last save:", "" + lastSaveTimeScene);
    35         }
    36         EditorGUILayout.EndToggleGroup();
    37         showMessage = EditorGUILayout.BeginToggleGroup("Show Message", showMessage);
    38         EditorGUILayout.EndToggleGroup();
    39     }
    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文件夹中,然后编辑的窗口再Window目录下。

     

    在激活状态下,才可有效。希望对大家有所帮助。

  • 相关阅读:
    orcale 多列转一行显示
    orcale 树形结构查询
    orcale 32位guid转36位guid
    orcale 树形结构查询
    win7下安装virtualbox+Ubuntu12.04笔记
    Spring调度器corn表达式详解
    MYSQL之一主多从搭建方案
    None of the configured nodes are available:[{#transport#-1}解决方案
    大数据分批次提交保存
    ORACLE时间类型字段加减简便运算
  • 原文地址:https://www.cnblogs.com/123ing/p/3703797.html
Copyright © 2011-2022 走看看