AutoSave du projet UNITY3D

autosave

Bien qu’ Unity3D soit très stable, une précaution n’est jamais inutile, ce script AutoSave.cs va vous permettre de paramétrer dans votre projet une sauvegarde automatique a interval régulier.

 

Le script que vous pouvez trouver en fin d’article doit être créer dans le dossier « Editor » de votre projet UNITY3D. Si il n’existe pas il suffit simplement de le créer.

 

autosave menu

Vous pouvez accéder au paramètre de sauvegarde Automatique depuis le menu Windows d’ Unity.

 

Ci dessous le script AutoSave.cs, l’ asset a importer dans votre projet est téléchargeable ici (AutoSave Unity).

using UnityEngine;
using UnityEditor;
using System;

public class AutoSave : EditorWindow
{

    private bool autoSaveScene = true;
    private bool showMessage = true;
    private bool isStarted = false;
    private int intervalScene;
    private DateTime lastSaveTimeScene = DateTime.Now;

    private string projectPath = Application.dataPath;
    private string scenePath;

    [MenuItem("Window/AutoSave")]
    static void Init()
    {
        AutoSave saveWindow = (AutoSave)EditorWindow.GetWindow(typeof(AutoSave));
        saveWindow.Show();
    }

    void OnGUI()
    {
        GUILayout.Label("Info:", EditorStyles.boldLabel);
        EditorGUILayout.LabelField("Saving to:", "" + projectPath);
        EditorGUILayout.LabelField("Saving scene:", "" + scenePath);
        GUILayout.Label("Options:", EditorStyles.boldLabel);
        autoSaveScene = EditorGUILayout.BeginToggleGroup("Auto save", autoSaveScene);
        intervalScene = EditorGUILayout.IntSlider("Interval (minutes)", intervalScene, 1, 10);
        if (isStarted)
        {
            EditorGUILayout.LabelField("Last save:", "" + lastSaveTimeScene);
        }
        EditorGUILayout.EndToggleGroup();
        showMessage = EditorGUILayout.BeginToggleGroup("Show Message", showMessage);
        EditorGUILayout.EndToggleGroup();
    }


    void Update()
    {
        scenePath = EditorApplication.currentScene;
        if (autoSaveScene)
        {
            if (DateTime.Now.Minute >= (lastSaveTimeScene.Minute + intervalScene) || DateTime.Now.Minute == 59 && DateTime.Now.Second == 59)
            {
                saveScene();
            }
        }
        else
        {
            isStarted = false;
        }

    }

    void saveScene()
    {
        EditorApplication.SaveScene(scenePath);
        lastSaveTimeScene = DateTime.Now;
        isStarted = true;
        if (showMessage)
        {
            Debug.Log("AutoSave saved: " + scenePath + " on " + lastSaveTimeScene);
        }
        AutoSave repaintSaveWindow = (AutoSave)EditorWindow.GetWindow(typeof(AutoSave));
        repaintSaveWindow.Repaint();
    }
}

 

 

 

A propos de upln 279 Articles
En informatique le problème se situe souvent entre la chaise et le clavier !

1 Comment

Poster un Commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.