7adf4cc9b5
For the time being we don't support writing a description for those, preferring having all details in the method's description. Using self-closing tags saves half the lines, and prevents contributors from thinking that they should write the argument or return documentation there.
125 lines
5.4 KiB
XML
125 lines
5.4 KiB
XML
<?xml version="1.0" encoding="UTF-8" ?>
|
|
<class name="PackedScene" inherits="Resource" version="4.0">
|
|
<brief_description>
|
|
An abstraction of a serialized scene.
|
|
</brief_description>
|
|
<description>
|
|
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 [code]owner[/code] property on [Node]).
|
|
[b]Note:[/b] The node doesn't need to own itself.
|
|
[b]Example of loading a saved scene:[/b]
|
|
[codeblocks]
|
|
[gdscript]
|
|
# 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)
|
|
[/gdscript]
|
|
[csharp]
|
|
// 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);
|
|
[/csharp]
|
|
[/codeblocks]
|
|
[b]Example of saving a node with different owners:[/b] The following example creates 3 objects: [code]Node2D[/code] ([code]node[/code]), [code]RigidBody2D[/code] ([code]rigid[/code]) and [code]CollisionObject2D[/code] ([code]collision[/code]). [code]collision[/code] is a child of [code]rigid[/code] which is a child of [code]node[/code]. Only [code]rigid[/code] is owned by [code]node[/code] and [code]pack[/code] will therefore only save those two nodes, but not [code]collision[/code].
|
|
[codeblocks]
|
|
[gdscript]
|
|
# Create the objects.
|
|
var node = Node2D.new()
|
|
var rigid = RigidBody2D.new()
|
|
var collision = CollisionShape2D.new()
|
|
|
|
# Create the object hierarchy.
|
|
rigid.add_child(collision)
|
|
node.add_child(rigid)
|
|
|
|
# Change owner of `rigid`, but not of `collision`.
|
|
rigid.owner = node
|
|
var scene = PackedScene.new()
|
|
|
|
# Only `node` and `rigid` are now packed.
|
|
var result = scene.pack(node)
|
|
if result == OK:
|
|
var error = ResourceSaver.save("res://path/name.tscn", scene) # Or "user://..."
|
|
if error != OK:
|
|
push_error("An error occurred while saving the scene to disk.")
|
|
[/gdscript]
|
|
[csharp]
|
|
// Create the objects.
|
|
var node = new Node2D();
|
|
var rigid = new RigidBody2D();
|
|
var collision = new CollisionShape2D();
|
|
|
|
// Create the object hierarchy.
|
|
rigid.AddChild(collision);
|
|
node.AddChild(rigid);
|
|
|
|
// Change owner of `rigid`, but not of `collision`.
|
|
rigid.Owner = node;
|
|
var scene = new PackedScene();
|
|
|
|
// Only `node` and `rigid` are now packed.
|
|
Error result = scene.Pack(node);
|
|
if (result == Error.Ok)
|
|
{
|
|
Error error = ResourceSaver.Save("res://path/name.tscn", scene); // Or "user://..."
|
|
if (error != Error.Ok)
|
|
{
|
|
GD.PushError("An error occurred while saving the scene to disk.");
|
|
}
|
|
}
|
|
[/csharp]
|
|
[/codeblocks]
|
|
</description>
|
|
<tutorials>
|
|
<link title="2D Role Playing Game Demo">https://godotengine.org/asset-library/asset/520</link>
|
|
</tutorials>
|
|
<methods>
|
|
<method name="can_instantiate" qualifiers="const">
|
|
<return type="bool" />
|
|
<description>
|
|
Returns [code]true[/code] if the scene file has nodes.
|
|
</description>
|
|
</method>
|
|
<method name="get_state">
|
|
<return type="SceneState" />
|
|
<description>
|
|
Returns the [code]SceneState[/code] representing the scene file contents.
|
|
</description>
|
|
</method>
|
|
<method name="instantiate" qualifiers="const">
|
|
<return type="Node" />
|
|
<argument index="0" name="edit_state" type="int" enum="PackedScene.GenEditState" default="0" />
|
|
<description>
|
|
Instantiates the scene's node hierarchy. Triggers child scene instantiation(s). Triggers a [constant Node.NOTIFICATION_INSTANCED] notification on the root node.
|
|
</description>
|
|
</method>
|
|
<method name="pack">
|
|
<return type="int" enum="Error" />
|
|
<argument index="0" name="path" type="Node" />
|
|
<description>
|
|
Pack will ignore any sub-nodes not owned by given node. See [member Node.owner].
|
|
</description>
|
|
</method>
|
|
</methods>
|
|
<members>
|
|
<member name="_bundled" type="Dictionary" setter="_set_bundled_scene" getter="_get_bundled_scene" default="{"conn_count": 0,"conns": PackedInt32Array(),"editable_instances": [],"names": PackedStringArray(),"node_count": 0,"node_paths": [],"nodes": PackedInt32Array(),"variants": [],"version": 2}">
|
|
A dictionary representation of the scene contents.
|
|
Available keys include "rnames" and "variants" for resources, "node_count", "nodes", "node_paths" for nodes, "editable_instances" for base scene children overrides, "conn_count" and "conns" for signal connections, and "version" for the format style of the PackedScene.
|
|
</member>
|
|
</members>
|
|
<constants>
|
|
<constant name="GEN_EDIT_STATE_DISABLED" value="0" enum="GenEditState">
|
|
If passed to [method instantiate], blocks edits to the scene state.
|
|
</constant>
|
|
<constant name="GEN_EDIT_STATE_INSTANCE" value="1" enum="GenEditState">
|
|
If passed to [method instantiate], provides local scene resources to the local scene.
|
|
[b]Note:[/b] Only available in editor builds.
|
|
</constant>
|
|
<constant name="GEN_EDIT_STATE_MAIN" value="2" enum="GenEditState">
|
|
If passed to [method instantiate], provides local scene resources to the local scene. Only the main scene should receive the main edit state.
|
|
[b]Note:[/b] Only available in editor builds.
|
|
</constant>
|
|
</constants>
|
|
</class>
|