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.