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

EditorWindow.DiscardChanges

Declaration

public void DiscardChanges();

Описание

Отбрасывает несохраненные изменения в содержимом окна.

Переопределите DiscardChanges(), чтобы отбрасывать несохранённую работу при закрытии окна. Редактор вызывает этот метод сам, когда пользователь закрывает окно. После вызова редактор предлагает пользователю отказаться от изменений. Переопределяя этот метод, вызывайте базовую реализацию. Иначе EditorWindow.hasUnsavedChanges Обратите внимание, что если Редактор предлагает пользователю отказаться от своих изменений несколько раз, то он будет вызывать этот метод как часть списка изменений, которые необходимо отказаться от. Если этот метод вызывает исключение, 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();
    }
}