Public API
PersistentAsset(.BuiltIns/.NoCode) and the editor mirrors PersistentAsset.Editor(.BuiltIns/.NoCode)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.
PersistenceManagerEditor
EditorextendingPersistentAsset.EditorBase 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.BuiltInsBase 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.BuiltInsBase 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.NoCodeBase 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.EditorThe 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.EditorThe 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.EditorBuilding blocks to draw a PersistenceManager inspector by hand (the manager-agnostic helpers live in PersistentAssetEditorGUI).
| IReadOnlyList<string> NonParameterFields | Property 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.EditorGeneral 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 / WebGLBuildTargets | Ready-made target groups to veto from a manager. |
SecurityGUI
staticextendingPersistentAsset.Editor.BuiltInsShared 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.BuiltInsShared 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.BuiltInsFind 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.NoCodeBase 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 Id | Attribute binding a widget to a codec id. |
TypeDisplay
structextendingPersistentAsset.EditorThe 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. |