Unity 6.3
0 онлайн 83 гостей 3 в системе
Вход

EditorWindow.SaveChanges

Declaration

public void SaveChanges();

Описание

Выполняет сохранение содержимого окна.

Переопределить SaveChanges() при использовании свойств EditorWindow.hasUnsavedChanges, чтобы пользователь не потерял несохраненную работу при закрытии окна. Редактор также вызывает этот метод внутри себя, когда пользователь закрывает окно. После вызова, Редактор просит пользователя сохранить изменения. При переопределении метода, обязательно вызовите базовую реализацию, иначе свойство EditorWindow.hasUnsavedChanges не будет сброшено на false. Обратите внимание, что если Редактор имеет несколько запросов к пользователю о сохранении их изменений, Редактор будет вызывать этот метод как часть списка изменений, которые требуют сохранения. Unity отменяет процесс сохранения для всех оставшихся запросов, если этот метод вызывает исключение. В этом случае вы увидите сообщение об ошибке с сообщением об исключении, отображаемым в диалоговом окне.

using UnityEngine;
using UnityEditor;
using UnityEngine.UIElements;

public class UnsavedChangesExampleWindow : EditorWindow
{
    [MenuItem("Examples/Editor Window With Unsaved Changes")]
    static void Init()
    {
        UnsavedChangesExampleWindow window = (UnsavedChangesExampleWindow)EditorWindow.GetWindowWithRect(typeof(UnsavedChangesExampleWindow), new Rect(100, 100, 400, 400));

        window.saveChangesMessage = "This window has unsaved changes. Would you like to save?";
        window.Show();
    }

    void CreateGUI()
    {
        var label = new Label();
        label.text = hasUnsavedChanges ? "I have changes!" : "No changes.";
        rootVisualElement.Add(label);

        var buttonCreate = new Button();
        buttonCreate.text = "Create unsaved changes";
        buttonCreate.clicked += () => {
            hasUnsavedChanges = true;
            Debug.Log($"{this} has unsaved changes!!!");
        };
        rootVisualElement.Add(buttonCreate);

        var buttonSave = new Button();
        buttonSave.text = "Save";
        buttonSave.clicked += () => SaveChanges();
        rootVisualElement.Add(buttonSave);

        var buttonDiscard = new Button();
        buttonDiscard.text = "Discard";
        buttonDiscard.clicked += () => DiscardChanges();
        rootVisualElement.Add(buttonDiscard);
    }

    public override void SaveChanges()
    {
        // Your custom save procedures here

        Debug.Log($"{this} saved successfully!!!");
        base.SaveChanges();
    }

    public override void DiscardChanges()
    {
        // Your custom procedures to discard changes

        Debug.Log($"{this} discarded changes!!!");
        base.DiscardChanges();
    }
}