Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

EditorWindow.SaveChanges

Объявление

public void SaveChanges();

Описание

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

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

// Пример C# // Скрипт, демонстрирующий API несохраненных изменений using UnityEngine; using UnityEditor; public class UnsavedChangesExampleWindow : EditorWindow { [MenuItem("Example/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 OnGUI() { saveChangesMessage = EditorGUILayout.TextField(saveChangesMessage); EditorGUILayout.LabelField(hasUnsavedChanges ? "I have changes!" : "No changes.", EditorStyles.wordWrappedLabel); EditorGUILayout.LabelField("Try to close the window."); using (new EditorGUI.DisabledScope(hasUnsavedChanges)) { if (GUILayout.Button("Create unsaved changes")) hasUnsavedChanges = true; } using (new EditorGUI.DisabledScope(!hasUnsavedChanges)) { if (GUILayout.Button("Save")) SaveChanges(); if (GUILayout.Button("Discard")) DiscardChanges(); } } 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(); } }
Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
API скрипты 2021.3