Quick answer: Unity Tilemap.SetTile with a runtime-created tile type rendering blank? TileBase references must be in TileMap's compatibility list - add via reflection or use ScriptableObject pool.
Runtime-spawned ItemTile renders blank; existing item tiles work.
Pre-register tile types
Add all tile types at project load; pool. Runtime spawn picks from pool; types are known.
Or use TileBase generically
Custom TileBase that handles all variants. SetTileData reads metadata per tile.
Verify via Tilemap.GetTile
Read back; ensure the type matches. Mismatch points at the compatibility issue.
“Tilemap's tile registry is implicit. Runtime adds need explicit registration.”
For procedural tilemaps, the registry is the design surface. Plan it; new tile types follow.