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

EditorWindow.saveChangesMessage

Declaration

public string saveChangesMessage;

Описание

Сообщение, которое отображается пользователю при получении запроса на сохранение

Задайте saveChangesMessage в производном классе, чтобы пользователи случайно не потеряли несохранённую работу. Чтобы saveChangesMessage работал, его нужно использовать вместе с EditorWindow.hasUnsavedChanges и переопределите EditorWindow.SaveChanges метод. Это сообщение показывается точно так, как вы его написали. Это сообщение показывается пользователям, у которых есть несохраненные изменения, если они пытаются закрыть окно или вкладку с этим EditorWindow. Сообщение о сохранении изменений может объединяться с другими сообщениями из других окон. Это происходит, если есть несколько окон с несохраненными изменениями.

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();
    }
}