saveChangesMessage
The message that displays to the user if they are prompted to save.
Read time 1 minuteLast updated 5 days ago
Definition
- Type: Property
- Namespace: UnityEditor
- Assembly: UnityEditor
public string saveChangesMessage { get; protected set; }
Remarks
Set saveChangesMessage in a derived class to prevent users from accidentally losing unsaved work. For saveChangesMessage to work, you must use it with _hasUnsavedChanges and override the Editor.SaveChanges() method. This message shows exactly as you have written it. This message presents to users who have unsaved changes, if they attempt to close the Inspector, change Selection or enter Playmode. The save changes message might combine with other messages from other editors. This occurs if there are multiple editors that have unsaved changes.
Examples
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(); }}