Quick answer: Godot 4 C# [Export] Array<Resource> default values cleared after each recompile? Default initialization runs at constructor; recompile resets - move defaults to OnReady.

Inventory has default starting items; recompile in editor; inventory is empty.

Initialize in _Ready

public override void _Ready() {{
  if (Items.Count == 0) Items.Add(default);
}}

Guard empty; populate at runtime.

Or set in inspector

If defaults belong on specific instances, set in scene file. Recompile preserves scene data.

Avoid C# field initializers

Field initializers run at construction; lost on hot-reload. Use _Ready instead.

“C# field initializers and Godot reload don't compose. Defaults need a stable initialization point.”

Lifecycle of C# scripts in Godot is its own learning curve. Document the patterns; new contributors benefit.

Related reading