查看: 621|回复: 0
打印 上一主题 下一主题

[其他] unity自动保存场景

[复制链接]

2722

主题

42

听众

3万

积分

资深设计师

Rank: 7Rank: 7Rank: 7

纳金币
38266
精华
111

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

跳转到指定楼层
楼主
发表于 2015-2-28 23:28:26 |只看该作者 |倒序浏览

       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 }

分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

关闭

站长推荐上一条 /1 下一条

手机版|纳金网 ( 闽ICP备08008928号

GMT+8, 2024-5-14 19:10 , Processed in 2.049747 second(s), 29 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部