Skip to content

Instantly share code, notes, and snippets.

@MarianoGnu
Last active November 4, 2025 14:07
Show Gist options
  • Select an option

  • Save MarianoGnu/2743aabc40f3b978b491af297c030c3a to your computer and use it in GitHub Desktop.

Select an option

Save MarianoGnu/2743aabc40f3b978b491af297c030c3a to your computer and use it in GitHub Desktop.
class_name TilemapSaver
## Converts Node2D and it's TileMapLayer children to a PackedScene
static func pack_tilemaps(parent_node: Node2D) -> PackedScene:
for child in parent_node.get_children():
if child is TileMapLayer:
child.owner = parent_node
var packed := PackedScene.new()
var result = packed.pack(parent_node)
if result == OK:
return packed
# failed
return null
static func save_tilemaps(parent_node: Node2D, file_path: String) -> Error:
var scene: PackedScene = pack_tilemaps(parent_node)
DirAccess.make_dir_absolute(file_path.get_base_dir())
return ResourceSaver.save(scene, path)
# Usage:
# save_tilemaps(parent_node, "user://{save_index}/maps/{map_id}.tscn")
# Reloading:
# var scene = load("user://{save_index}/maps/{map_id}.tscn")
# var node = scene.instantiate()
# map.add_node(node)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment