Unsupported types
What the capture refuses, why each one is refused, and the alternative the Inspector suggests instead.
Refused with a reason, never dropped silently#
| Type | Why | What to do instead |
|---|---|---|
Texture2D, Material, Mesh, AudioClip, AnimationClip, Sprite, Shader | Editor content, not game state | Store a key you manage (a name, an index, an asset id) and resolve it when you load |
UnityEvent, delegates | A binding, not a value | Save the state the event acts on |
IntPtr, Type | No stable text form | Store a name or an id |
| A Unity object with no persistent id | Nothing stable to point at | Add PersistentIdentity, or derive the asset from PersistableScriptableObject |
| Anything deeper than the capture limit | A cyclic or runaway graph | Flatten the structure, or raise the limit deliberately |
A refused field makes the capture unusable (IsUsable == false) rather than producing a save that quietly lost data. The report names the field, says why, and names the alternative.
The usual fix is a key, not a copy#
Saving a Texture2D would mean writing pixels into the save, which is slow, large, and wrong: the texture is content the build already ships. Save the choice instead:
public sealed class EquippedSkin : MonoBehaviour
{
public string skinKey = class="tok-str">"default"; // resolved against your own catalogue at load
}Where these appear#
The Inspector's Data section shows refusals as you assign sources, and the generated code in the Code section never mentions a refused type. The same findings are visible in Advanced mode and in Beginner mode — a refusal is not hidden because a view is simple.
Next#
- Supported types — the other half of the list.
- GameObjects and components —
[PersistIgnore]versus a refusal. - Diagnostics — the finding format every refusal uses.
Something wrong on this page? Every page here describes behaviour that is checked in the repository. If a page and the package disagree, the package wins.
Report a documentation problem · Frequently asked questions · Troubleshooting