Reference for every public type and member in the Editor Extension area. Red text flags the exceptions a member can throw. See the API overview for the other areas.

Editor ExtensionCustomize the package's inspectors, drawers and tooling.

PersistenceManagerEditor

EditorextendingPersistentAsset.Editor

Base editor giving a custom PersistenceManager the standard inspector (Parameters, Actions, Status). Inherit it with a [CustomEditor] and override a Draw* hook; call base to keep the standard content.

PersistenceManager PersistenceManager / PersistenceManager[] PersistenceManagers (protected)The inspected manager (the first one when several are selected) and all of them, mirroring target / targets.
virtual void DrawParameters() / DrawActions() / DrawStatus(PersistenceManager selected) (protected)The three sections; override to customize (call base to extend).
bool ShowParameters / ShowActions / ShowStatus (protected virtual)Whether each section is shown at all.
IReadOnlyCollection<BuildTarget> UnsupportedBuildTargets (protected virtual)Platforms this manager cannot persist on (shows an error box); empty by default.

RemotePersistenceManagerEditor

EditorextendingPersistentAsset.Editor.BuiltIns

Base editor for a RemotePersistenceManager subclass: the standard manager inspector plus the offline-cache parameters. Used automatically for any remote manager without a more specific editor.

override void DrawParameters() (protected)Adds the cache section to the Parameters.
void DrawCacheParameters() (protected)Draw the Cache Mode (and Offline Cold Start) fields; place it from a DrawParameters override.

SlotRegistryEditor

EditorextendingPersistentAsset.Editor.BuiltIns

Base editor for PersistentSlotRegistry and its subclasses: draws your fields, then the read-only slot entries. Inherit with a [CustomEditor].

virtual void DrawProperties() (protected)Override DrawProperties to control the fields shown above the entries (call base to keep the default).

PersistentVariablesEditor

EditorextendingPersistentAsset.Editor.NoCode

Base editor for PersistentVariables and its subclasses: draws the non-variable fields, then the variable list. Inherit with a [CustomEditor].

PersistentVariables Variables (protected)The inspected asset, mirroring target.
virtual void DrawProperties() / virtual string[] HandledProperties (protected)Override (or extend the excluded set) to customize the fields shown above the list.

SerializerDrawer

drawerextendingPersistentAsset.Editor

The PropertyDrawer for every Serializer field (a type popup, then the selected type's fields). Inherit + [CustomPropertyDrawer(typeof(YourSerializer))] to customize.

virtual float FieldsHeight(SerializedProperty) / virtual void DrawFields(Rect, SerializedProperty) (protected)Override to draw the serializer's fields below the type popup.

SettingsEntryDrawer

drawerextendingPersistentAsset.Editor

The PropertyDrawer for every SettingsEntry section (draws its fields flat). Inherit + [CustomPropertyDrawer(typeof(YourSettings))] to customize.

virtual float FieldsHeight(SerializedProperty) / virtual void DrawFields(Rect, SerializedProperty) (protected)Override to draw the section's content.

PersistenceManagerEditorGUI

staticextendingPersistentAsset.Editor

Building blocks to draw a PersistenceManager inspector by hand (the manager-agnostic helpers live in PersistentAssetEditorGUI).

IReadOnlyList<string> NonParameterFieldsProperty paths that are not parameters (script, target, id, import plumbing), to exclude when drawing custom fields.
IReadOnlyList<string> DrawBaseParameters(SerializedObject)Draw the serializer + exposed base parameters; returns the paths drawn.
void DrawBaseProperty(SerializedProperty)Draw one base parameter with its standard presentation.
void DrawProperty(SerializedProperty) / DrawProperty(SerializedProperty, GUIContent)Draw a field, auto-locked when it is a [Breaking] field and the manager is locked.
void DrawTargetHeader(Editor) / bool DrawImportSourceInspector(Editor)Draw the target header; draw the import-source inspector (returns whether it handled it).
void DrawActions(PersistenceManager[], ref bool newSlotEnabled, ref string newSlot) / PersistenceManager DrawSelector(PersistenceManager[], ref int selectedIndex)Draw the slot row + Load/Save/Clear buttons; draw the multi-edit selector.
void DrawStatus(PersistenceManager) / void DrawLogs(PersistenceManager, ref float scrollPosition)Draw the status rows; draw the inspector log view.
void DrawLockRow(PersistenceManager[]) / bool IsLocked(PersistenceManager)Draw the lock toolbar; query whether a manager is locked.
void DrawBreakingLockIcon(Rect, SerializedProperty) / bool IsBreakingFieldLocked(SerializedProperty)Draw / query the padlock for a [Breaking] field.
struct BreakingFieldScope : IDisposable · BreakingFieldScope(params PersistenceManager[])A using block that mirrors the managers' locked state onto every field drawn inside it.
void DrawPersistenceDisabledError(PersistenceManager[]) / DrawPolicyConstraintConflictError(PersistenceManager[]) / DrawStorageLocationConflictError(PersistenceManager[])Error boxes for a disabled manager / a policy-versus-constraint conflict / a manager resolving to the same storage location as another one in the project.
void DrawTestManagerBox(PersistenceManager[])Warning box and exit button of a test manager (restores the kept setup it replaced, or removes it); draws nothing for any other manager.

PersistentAssetEditorGUI

staticextendingPersistentAsset.Editor

General editor GUI building blocks with no PersistenceManager dependency: titles, foldouts, hinted float fields and build-target groups.

void DrawTitle(string title, bool space = true)Draw a bold section title.
void HintedFloatField(Rect, SerializedProperty, Func<float, string> hint, float? minimum = null, GUIContent label = null)A float field with an in-field hint and an optional floor.
AnimBool CreateFoldout(Editor, string key, bool expandedByDefault = true)Create a persisted, animated foldout state (pair with FoldoutScope).
struct FoldoutScope : IDisposable · FoldoutScope(AnimBool foldout, string title) · bool Visible { get; }A using-block animated foldout header + guarded content; wrap the body in if (scope.Visible).
void DrawUnsupportedBuildTargetError(IReadOnlyCollection<BuildTarget>)Error box while the active build target is unsupported.
IReadOnlyList<BuildTarget> ConsoleBuildTargets / MobileBuildTargets / WebGLBuildTargetsReady-made target groups to veto from a manager.

SecurityGUI

staticextendingPersistentAsset.Editor.BuiltIns

Shared drawing of the Encryption + Lock Save To fields for managers reusing CheatProtectionUtility.

void DrawFields(SerializedProperty encryptionProperty, SerializedProperty lockSaveToProperty)Draw Encryption and (when on) the Lock Save To field with per-lock warnings.

SlotFormatGUI

staticextendingPersistentAsset.Editor.BuiltIns

Shared drawing for fields accepting the "<slot>" placeholder (the file manager's file name, the HTTP id).

string MultiSlotHelpText(string usage)The help-box text explaining the placeholder.
void DrawField(SerializedProperty, IReadOnlyList<PersistenceManager>, string multiSlotHelpText)Draw the field (empty value ghosts the unique id).
void DrawValidationError(string reason)Draw an invalid-name error box (null = valid).

SerializedObjectExtensions

staticextendingPersistentAsset.Editor.BuiltIns

Find the serialized backing field of a [field: SerializeField] auto-property by its property name.

SerializedProperty FindBackingField(this SerializedObject, string propertyName)The backing property on a serialized object.
SerializedProperty FindBackingFieldRelative(this SerializedProperty, string propertyName)The backing property relative to a serialized property.

VariableWidget / VariableWidget<T>

abstractextendingPersistentAsset.Editor.NoCode

Base for a custom inspector editor of a No-Code variable value. Pair it to a codec id with [VariableWidget]; prefer the typed VariableWidget<T>, which handles the codec round trip.

abstract string Draw(Rect, GUIContent, VariableTypeCodec, string value)(base) Draw an editor for the stored string; return the edited string.
virtual float GetHeight(GUIContent, string value)Height needed (one line by default).
protected abstract T Draw(Rect, GUIContent, T value)(VariableWidget<T>) Draw a typed value editor.
[VariableWidget(string id)] · string IdAttribute binding a widget to a codec id.

TypeDisplay

structextendingPersistentAsset.Editor

The inspector display info read from a type's [InspectorDisplay] (with sensible defaults). Shared by the type pickers to label, sort and group entries.

string Name / Description { get; }, int Order { get; }, string Category { get; }The resolved display fields.
GUIContent Content { get; } / string MenuPath { get; } / GUIContent MenuContent { get; }Ready-made label content, its submenu path, and the labelled menu content for a picker.
static TypeDisplay Of(MemberInfo member, string fallbackName = null)Read a type's or method's display info.
static IEnumerable<(Type type, TypeDisplay display)> OrderedDerivedFrom(Type baseType) / bool IsInTestAssembly(Type)Concrete derived types ordered for a picker; whether a type is in a test assembly.

Attributes

attrextendingPersistentAsset.Editor
[ClearLocalData(Type persistenceManagerType)]
Type PersistenceManagerType { get; }
Mark a parameterless static method as a "clear local data" cleaner for a manager type, run from Tools > Persistent Asset > Actions > Delete Local Data. The constructor throws ArgumentNullException when persistenceManagerType is null.