// Animancer // https://kybernetik.com.au/animancer // Copyright 2018-2024 Kybernetik // // Uncomment this #define to apply this custom editor to all ScriptableObjects. // If you have another plugin with a custom ScriptableObject editor, you will probably want that one instead. //#define ANIMANCER_SCRIPTABLE_OBJECT_EDITOR #if UNITY_EDITOR using UnityEditor; using UnityEngine; namespace Animancer.Editor { /// [Editor-Only] /// A custom Inspector for s which adds a message explaining that changes in play /// mode will persist. /// /// https://kybernetik.com.au/animancer/api/Animancer.Editor/ScriptableObjectEditor /// #if ANIMANCER_SCRIPTABLE_OBJECT_EDITOR [CustomEditor(typeof(ScriptableObject), true, isFallback = true), CanEditMultipleObjects] #endif public class ScriptableObjectEditor : UnityEditor.Editor { /************************************************************************************************************************/ /// Draws the regular Inspector then adds a message explaining that changes in Play Mode will persist. /// Called by the Unity editor to draw the custom Inspector GUI elements. public override void OnInspectorGUI() { base.OnInspectorGUI(); if (target != null && EditorApplication.isPlayingOrWillChangePlaymode && EditorUtility.IsPersistent(target)) { EditorGUILayout.HelpBox("This is an asset, not a scene object," + " which means that any changes you make to it are permanent" + " and will NOT be undone when you exit Play Mode.", MessageType.Warning); } } /************************************************************************************************************************/ } } #endif