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目录下。

     

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

  • 相关阅读:
    php实现qq授权登录
    lnmp环境下上传文件过大出现 <服务器IO错误> 问题解决方案
    matpb画图_折线图.ipynb
    垂直条形图——plot.bar
    将博客搬至CSDN
    pandas的函数应用二——排序
    pandas的函数应用一
    pandas的数据对齐
    将一个二维数组的行和列分别进行逆向
    numpy——深拷贝和浅拷贝和不拷贝
  • 原文地址:https://www.cnblogs.com/123ing/p/3703797.html
Copyright © 2011-2022 走看看