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
Hérite de : Resource < RefCounted < Object
Une abstraction d'une scène sérialisée.
Description
Une interface simplifiée pour un fichier de scène. Fournit l'accès aux opérations et vérifications qui peuvent être faites sur la ressource de scène elle-même.
Peut être utilisé pour enregistrer un nœud dans un fichier. À l'enregistrement, le nœud tout comme tous les nœuds dont il est propriétaire sont enregistrés dans le fichier (voir la propriété Node.owner).
Note : Le nœud n'a pas besoin d'être son propre propriétaire.
Exemple : Chargement d'une scène enregistrée :
# Utiliser `load()` plutôt que `preload()` si le chemin n'est pas connu à la compilation.
var scene = preload("res://scene.tscn").instance()
# Ajouter un nœud comme enfant du nœud auquel le script est attaché.
add_child(scene)
// C# n'a pas de `preload`, donc vous devez toujours utiliser ResourceLoader.Load<PackedScene>().
var scene = ResourceLoader.Load<PackedScene>("res://scene.tscn").Instantiate();
// Ajouter un nœud comme enfant du nœud auquel le script est attaché.
AddChild(scene);
Exemple : Enregistrement d'un nœud avec différents propriétaires. L'exemple suivant crée 3 objets : Node2D (node), RigidBody2D (body) et CollisionObject2D (collision). collision est un enfant de body qui est un enfant de node. Seul body est la propriété de node et pack() n'enregistrera alors que ces deux nœuds, mais pas collision.
# Créer les objets.
var node = Node2D.new()
var rigid = RigidBody2D.new()
var collision = CollisionShape2D.new()
# Créer la hiérarchie des objets.
rigid.add_child(collision)
node.add_child(rigid)
# Changer le propriétaire de `rigid`, mais pas de `collision`.
rigid.owner = node
var scene = PackedScene.new()
# Seulement `node` and `rigid` sont compactés.
var result = scene.pack(node)
if result == OK:
var error = ResourceSaver.save("res://chemin/nom.scn", scene) # Ou "user://..."
if error != OK:
push_error("Une erreur est survenue à l'enregistrement de cette scène sur le disque.")
// Créer les objets.
var node = new Node2D();
var body = new RigidBody2D();
var collision = new CollisionShape2D();
// Créer la hiérarchie des objets.
body.AddChild(collision);
node.AddChild(body);
// Changer le propriétaire de `rigid`, mais pas de `collision`.
body.Owner = node;
var scene = new PackedScene();
// Seulement `node` and `rigid` sont compactés.
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.");
}
}
Tutoriels
Méthodes
can_instantiate() const |
|
get_state() const |
|
instantiate(edit_state: GenEditState = 0) const |
|
Énumérations
enum GenEditState: 🔗
GenEditState GEN_EDIT_STATE_DISABLED = 0
S'il est passé à instantiate(), bloque les modifications à l'état de la scène.
GenEditState GEN_EDIT_STATE_INSTANCE = 1
S'il est passé à instantiate(), fournit des ressources de scène locale à la scène locale.
Note : Seulement disponible dans les compilations de l’éditeur.
GenEditState GEN_EDIT_STATE_MAIN = 2
S'il est passé à instantiate(), fournit des ressources de scène locale à la scène locale. Seule la scène principale devrait recevoir l'état principal d'édition.
Note : Seulement disponible dans les compilations de l’éditeur.
GenEditState GEN_EDIT_STATE_MAIN_INHERITED = 3
C'est similaire à GEN_EDIT_STATE_MAIN, mais pour le cas où la scène est instanciée pour être la base d'une autre.
Note : Seulement disponible dans les éditeurs.
Descriptions des méthodes
bool can_instantiate() const 🔗
Renvoie true si le fichier de scène a des nœuds.
SceneState get_state() const 🔗
Renvoie le SceneState représentant le contenu du fichier de scène.
Node instantiate(edit_state: GenEditState = 0) const 🔗
Instantancie la hiérarchie du nœud de la scène. Déclenche l’instanciation des enfants de la scène. Déclenche une notification Node.NOTIFICATION_SCENE_INSTANTIATED sur le nœud racine.
Compacte le nœud path, et tous les sous-nodes lui appartenant, dans cette PackedScene. Les données existantes seront effacées. Voir Node.owner.