zoukankan      html  css  js  c++  java
  • Unity之自动保存场景

    转“Unity插件研究院之自动保存场景” 

    unity编辑器出现闪退并且刚编辑完场景没来得及保存的问题。

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

    贴上此代码,放到AssetsEditor下

    然后在unity界面的Window下寻找到AutoSave就可以啦

    然后他就会隔了时间给你保存下还提示下(提示也可以选择性的啦)

    还有在unity界面LayerOut上还可以Save Layerout.

  • 相关阅读:
    Java中break和continue跳出指定循环
    Linux命令对应英文全称
    linux 使用 rz 和 sz 命令
    linux tail命令的使用方法详解
    Linux常用命令大全(非常全!!!)
    正则 函数
    行级锁 java||数据库
    mysql插入操作跳过(ignore)、覆盖(replace into)、更新(on duplicate key)
    MYSQL 常用【函数】大全
    MySQL中INFORMATION_SCHEMA
  • 原文地址:https://www.cnblogs.com/cathytong/p/4674188.html
Copyright © 2011-2022 走看看