0 votes

I wanted to turn a child node into a PackedScene (in runtime) just to make some edits and instance copies of it.

in Engine by (692 points)

1 Answer

+1 vote
Best answer
func save_as_scene():
    var file_path = "res://your_scene.tscn"
    var scene = PackedScene.new()
    scene.pack(get_node("your_node"))
    ResourceSaver.save(file_path,scene)

Make sure you set the owner for each child of your node, otherwise they won't be saved.

by (1,468 points)
selected by

So, if I don't want to save on disk by using ResourceSaver.save(), will I get a PackedScene with scene.pack()?

Yes, tested it.

If you are using tool scripts, i suggest using these flags for the resource saver:

ResourceSaver.save( path, resource, ResourceSaver.FLAG_CHANGE_PATH|ResourceSaver.FLAG_REPLACE_SUBRESOURCE_PATHS)

This will trigger a refresh of the editor.

Welcome to Godot Engine Q&A, where you can ask questions and receive answers from other members of the community.

Please make sure to read Frequently asked questions and How to use this Q&A? before posting your first questions.
Social login is currently unavailable. If you've previously logged in with a Facebook or GitHub account, use the I forgot my password link in the login box to set a password for your account. If you still can't access your account, send an email to [email protected] with your username.