Quick answer: Godot 4 C# Dictionary<Resource, T> not finding entries despite identical Resource references? Resource equality compares by Object pointer, not content - use ResourceUID as key.

Item -> count Dictionary. Same Resource loaded twice returns different lookup results.

Use UID string as key

var uid = item.ResourcePath;
dict[uid] = count;

Strings have content-equality; lookups work across loads.

Or override Equals

Custom IEqualityComparer for Resource. Compares ResourceUID or ResourcePath.

Resource_local_to_scene caveat

If you use local-to-scene, each scene has unique Resources. The bug is different; the fix is restructuring data.

“Resource equality is reference equality. Hash-keyed collections need content equality.”

Document the keying convention in your data architecture. UIDs as keys; resource refs as values. Cleaner across the project.

Related reading