原文来自于: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目录下。

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

unity自动保存项目的更多相关文章

  1. 【转载】Unity插件研究院之自动保存场景

    原文: http://wiki.unity3d.com/index.php?title=AutoSave  最近发现Unity老有自动崩溃的BUG. 每次崩溃的时候由于项目没有保存所以Hierarch ...

  2. pycharm 取消自动保存

    pycharm默认是自动保存的,习惯自己按 ctrl + s 的可以进行如下设置: 菜单File -> Settings... -> Appearance & Behavior - ...

  3. Unity自动打包工具

    转载 https://blog.csdn.net/ynnmnm/article/details/36774715 最开始有写打包工具的想法,是因为看到<啪啪三国>王伟峰分享的一张图,他们有 ...

  4. django2自动发现项目中的url

    根据路飞学城luffycity.com 的crm项目修改的 1 url入口:rbac/urls.py urlpatterns = [ ... # 批量操作权限 re_path(r'^multi/per ...

  5. Unity多媒体展示项目经验分享-ImageEffect+动态绑定

    Unity多媒体展示项目经验分享-ImageEffect+动态绑定+网络通信 <ignore_js_op> “海尔科技展墙”是去年年初我们为上海家电博览会制作的一个多媒体展项,有限的工期以 ...

  6. 权限组件(12):自动发现项目中有别名的URL

    自动发现项目中所有有别名的URL,效果如下: customer_list {'name': 'customer_list', 'url': '/customer/list/'} customer_ad ...

  7. WebStorm 编辑器 关闭自动保存功能及添加*星星标记

    WebStorm 关闭自动保存功能添加*星星标记为什么要关闭自动保存?      ​ 在前端项目工作当中,往往会采用自动化环境(Gulp.webpack等)当文本发生变化的时候就会自动编译代码.在we ...

  8. SpringBoot 2.x (1):手动创建项目与自动创建项目

    SpringBoot 2.x基于Spring Framework 5.x 环境需求如下: JDK1.8或以上 Maven3.2或以上 这里我使用的是Eclipse,IDEA这个工具很强大,但不习惯它 ...

  9. 【React】377- 实现 React 中的状态自动保存

    点击上方"前端自习课"关注,学习起来~ 作者:陈俊宇 https://github.com/CJY0208 什么是状态保存? 假设有下述场景: 移动端中,用户访问了一个列表页,上拉 ...

随机推荐

  1. java 连接 MySQL

    java 连接 MySQL 1.准备工作 需要下载的工具: MySQL:http://www.mysql.com/downloads/ MySQL的可视化工具SQLyog:https://www.we ...

  2. 《JavaScript权威指南》第六版阅读笔记(二):JavaScript词法结构

    JavaScript使用Unicode字符集.ECMAScript3要求JS的实现必须支持Unicode 2.1及后续版本,ECMAScript 5要求JS的实现支持Unicode 3及后续版本. J ...

  3. JsRender for object 语法说明

    JsRender 作为一款JavaScript模版引擎,必不可少的会有循环功能,也就是for,但由于JsRender过于灵活,for竟然可以接受object作为循环对象. {{for Array}}和 ...

  4. JQuery以JSON方式提交数据到服务端

    JQuery将Ajax数据请求进行了封装,从而使得该操作实现起来容易许多.以往我们要写很多的代码来实现该功能,现在只需要调用$.ajax()方法,并指明请求的方式.地址.数据类型,以及回调方法等.下面 ...

  5. JavaScript this 总结(含 ES6)

    本文主要总结自<JavaScript 语言精粹>.部分总结自<JavaScript 高级程序设计>以及自己的经验 四种调用模式 在 JavaScript 中,this 的值取决 ...

  6. atitit.客户端连接oracle数据库的方式总结

    客户端连接oracle数据库的方式总结 目录 Java程序连接一般使用jar驱动连接..... 桌面GUI一般采取c语言驱动oci.dll 直接连接... 间接连接(需要配置tns及其envi var ...

  7. JavaScript 语句 for

    循环for语句: for(var i =1;i<=5;i++)(初始条件:循环条件:状态改变) { 循环体 } 循环的作用:反复执行某段代码 四要素:初始条件.循环条件.循环体.状态改变 例题1 ...

  8. jdk分析工具:jps和jstack

    jps 用来查看基于HotSpot JVM里面所有进程的具体状态, 包括进程ID,进程启动的路径等等.与unix上的ps类似,用来显示本地有权限的java进程,可以查看本地运行着几个java程序,并显 ...

  9. 使用json-lib进行Java和JSON之间的转换 [转]

    [转] http://www.cnblogs.com/mailingfeng/archive/2012/01/18/2325707.html 1. json-lib是一个java类库,提供将Java对 ...

  10. BarManager.ContextMenu

    <!--Search & List Area--> <dxb:BarManager Name="barManager1" dxlc:DockLayoutC ...