Quick answer: Use Godot.Collections.Array<T> (or Dictionary) for inspector-edited collections. .NET’s List doesn’t serialize through Godot’s variant system.
Edit a List<EnemyDef> in the inspector. Save scene. Reopen — edits are gone. List wasn’t serialized.
The Symptom
Inspector-edited C# List property reverts on save/reload. Other [Export] properties save normally.
The Fix
using Godot.Collections;
[Export]
public Array<EnemyDef> Enemies { get; set; } = new();
[Export]
public Dictionary<string, int> Scores { get; set; } = new();
Godot.Collections types serialize through Godot’s variant system; inspector edits persist.
Element Type
Element type must be a variant: primitive, Resource, or Godot.Object. Custom data classes need to subclass Resource or be wrapped.
Verifying
Edit array, save, reopen. Edits persist. Without Godot.Collections: edits lost.
“Godot.Collections.Array. Variant element types. Edits persist.”
Related Issues
For C# Export Array, see Export Array. For exported Resource Array, see Resource Array.
Right collection type. Saves persist.