Quick answer: Godot 4 references resources by UID with the file path as a fallback. Moving files inside the FileSystem dock updates both. Moving them in your OS file manager or with git leaves scenes pointing at old paths, and if the .import or .uid sidecar files did not move too, the UID is lost. Move files back and redo the move in the editor, or fix references in the Dependencies dialog.
After reorganising folders, scenes open with "Missing dependencies" dialogs, or the console fills with "invalid UID, using text path instead". Nothing is corrupt — the editor just was not there when the files moved.
How Godot tracks resources
Scenes store each external resource with both a UID and a path:
[ext_resource type="Texture2D" uid="uid://c4lq2b8xkxm2r" path="res://art/hero.png" id="1"]
On load, Godot looks up the UID first and falls back to the path. The UID for an imported asset lives in its .import file; from Godot 4.4, scripts and shaders get a .uid file next to them. As long as either the UID or the path still resolves, the scene loads.
Why moving outside the editor breaks it
When you move hero.png in Explorer or Finder:
- The path stored in scenes is now wrong.
- If you moved
hero.pngbut nothero.png.import, the asset is reimported with a new UID, so the UID is wrong too.
With both wrong, the dependency is missing. With only the path wrong, you get warnings but it still loads (and saving the scene fixes the path).
Fix 1: undo and move in the editor
If you can, move the files back, open the project, and redo the move by dragging in the FileSystem dock. The editor updates every scene and resource that references them.
Fix 2: use the Dependencies dialog
When a scene reports missing dependencies, the dialog lets you click Fix Dependencies and point each broken entry at the new file. For a single resource, right-click it in the FileSystem dock and choose View Owners... to see what uses it.
Fix 3: re-save to update paths
If the warnings say "using text path instead" (the UID failed but the path worked) or the opposite, open and save the affected scenes. Godot writes the current UID and path back. For many scenes, use a small editor script that loads and re-saves each .tscn.
Fix 4: commit the sidecar files
Always commit .import files and, from Godot 4.4, .uid files, and move them together with their asset. Do not add them to .gitignore. Exclude only the .godot/ folder, which is a regenerated cache.
Fix 5: duplicate UIDs
Copying a file (with its .import) in the OS creates two assets with the same UID, and references may resolve to the wrong one. Godot warns about duplicate UIDs; delete the copied .import/.uid so the copy gets a fresh UID, or duplicate inside the editor with Duplicate....
After a git merge
Merges that move files on one branch and edit scenes on another are the most common source of broken references. After merging, open the project, let it reimport, and check the Output panel for UID warnings before committing.