Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
PackedScene
Hereda: Resource < RefCounted < Object
Una abstracción de una escena serializada.
Descripción
A simplified interface to a scene file. Provides access to operations and checks that can be performed on the scene resource itself.
Can be used to save a node to a file. When saving, the node as well as all the nodes it owns get saved (see Node.owner property).
Note: The node doesn't need to own itself.
Example: Load a saved scene:
# Use load() instead of preload() if the path isn't known at compile-time.
var scene = preload("res://scene.tscn").instantiate()
# Add the node as a child of the node the script is attached to.
add_child(scene)
// C# has no preload, so you have to always use ResourceLoader.Load<PackedScene>().
var scene = ResourceLoader.Load<PackedScene>("res://scene.tscn").Instantiate();
// Add the node as a child of the node the script is attached to.
AddChild(scene);
Example: Save a node with different owners. The following example creates 3 objects: Node2D (node), RigidBody2D (body) and CollisionObject2D (collision). collision is a child of body which is a child of node. Only body is owned by node and pack() will therefore only save those two nodes, but not collision.
# Create the objects.
var node = Node2D.new()
var body = RigidBody2D.new()
var collision = CollisionShape2D.new()
# Create the object hierarchy.
body.add_child(collision)
node.add_child(body)
# Change owner of `body`, but not of `collision`.
body.owner = node
var scene = PackedScene.new()
# Only `node` and `body` are now packed.
var result = scene.pack(node)
if result == OK:
var error = ResourceSaver.save(scene, "res://path/name.tscn") # Or "user://..."
if error != OK:
push_error("An error occurred while saving the scene to disk.")
// Create the objects.
var node = new Node2D();
var body = new RigidBody2D();
var collision = new CollisionShape2D();
// Create the object hierarchy.
body.AddChild(collision);
node.AddChild(body);
// Change owner of `body`, but not of `collision`.
body.Owner = node;
var scene = new PackedScene();
// Only `node` and `body` are now packed.
Error result = scene.Pack(node);
if (result == Error.Ok)
{
Error error = ResourceSaver.Save(scene, "res://path/name.tscn"); // Or "user://..."
if (error != Error.Ok)
{
GD.PushError("An error occurred while saving the scene to disk.");
}
}
Tutoriales
Métodos
can_instantiate() const |
|
get_state() const |
|
instantiate(edit_state: GenEditState = 0) const |
|
Enumeraciones
enum GenEditState: 🔗
GenEditState GEN_EDIT_STATE_DISABLED = 0
Si se pasa a instantiate(), bloquea las ediciones al estado de la escena.
GenEditState GEN_EDIT_STATE_INSTANCE = 1
Si se pasa a instantiate(), proporciona recursos de escena locales a la escena local.
Nota: Solo disponible en compilaciones de editor.
GenEditState GEN_EDIT_STATE_MAIN = 2
Si se pasa a instantiate(), proporciona recursos de la escena local a la escena local. Solo la escena principal debe recibir el estado de edición principal.
Nota: Solo disponible en las builds del editor.
GenEditState GEN_EDIT_STATE_MAIN_INHERITED = 3
Es similar a GEN_EDIT_STATE_MAIN, pero para el caso en que la escena se está instanciando para ser la base de otra.
Nota: Solo disponible en las builds del editor.
Descripciones de Métodos
bool can_instantiate() const 🔗
Devuelve true si el archivo de la escena tiene nodos.
SceneState get_state() const 🔗
Devuelve el SceneState que representa el contenido del archivo de la escena.
Node instantiate(edit_state: GenEditState = 0) const 🔗
Instancia la jerarquía de nodos de la escena. Desencadena la(s) instanciación de la(s) escena(s) hija(s). Dispara una notificación Node.NOTIFICATION_SCENE_INSTANTIATED en el nodo raíz.
Empaqueta el nodo path, y todos los subnodos propios, en esta PackedScene. Cualquier dato existente será borrado. Véase Node.owner.