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

Editor.DiscardChanges

Declaration

public void DiscardChanges();

Описание

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

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

using UnityEngine;
using UnityEditor;

[CreateAssetMenu] public class UnsavedChangesExampleSO : ScriptableObject {}

[CustomEditor(typeof(UnsavedChangesExampleSO))] public class UnsavedChangesExampleEditor : UnityEditor.Editor { void OnEnable() { saveChangesMessage = "This editor has unsaved changes. Would you like to save?"; }

void OnInspectorGUI() { saveChangesMessage = EditorGUILayout.TextField(saveChangesMessage);

EditorGUILayout.LabelField(hasUnsavedChanges ? "I have changes!" : "No changes.", EditorStyles.wordWrappedLabel); EditorGUILayout.LabelField("Try to change selection.");

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