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
Eredita: Resource < RefCounted < Object
Un'astrazione di una scena serializzata.
Descrizione
Un'interfaccia semplificata per un file di scena. Fornisce accesso alle operazioni e alle verifiche che possono essere eseguite sulla risorsa di scena stessa.
Può essere utilizzato per salvare un nodo in un file. Durante il salvataggio, il nodo e tutti i nodi posseduti da esso sono salvati (vedi la proprietà Node.owner).
Nota: Il nodo non deve possedere se stesso.
Esempio: Carica una scena salvata:
# Usa load() invece di preload() se il percorso non è noto in fase di compilazione.
var scene = preload("res://scene.tscn").instantiate()
# Aggiunge il nodo come figlio del nodo a cui è associato lo script.
add_child(scene)
// C# non ha preload, quindi è necessario usare sempre ResourceLoader.Load<PackedScene>().
var scene = ResourceLoader.Load<PackedScene>("res://scene.tscn").Instantiate();
// Aggiunge il nodo come figlio del nodo a cui è associato lo script.
AddChild(scene);
Esempio: Salva un nodo con proprietari diversi: L'esempio seguente crea 3 oggetti: Node2D (node), RigidBody2D (body) e CollisionObject2D (collision). collision è un figlio di body che è un figlio di node. Solo body è posseduto da node e pack() salverà quindi solo quei due nodi, ma non collision.
# Crea gli oggetti.
var node = Node2D.new()
var body = RigidBody2D.new()
var collision = CollisionShape2D.new()
# Crea la gerarchia degli oggetti.
body.add_child(collision)
node.add_child(body)
# Cambia il proprietario di `body`, ma non di `collision`.
body.owner = node
var scene = PackedScene.new()
# Solo `node` e `body` sono ora impacchettati.
var result = scene.pack(node)
if result == OK:
var error = ResourceSaver.save(scene, "res://path/name.tscn") # Or "user://..."
if error != OK:
push_error("Si è verificato un errore durante il salvataggio della scena su disco.")
// Crea gli oggetti.
var node = new Node2D();
var body = new RigidBody2D();
var collision = new CollisionShape2D();
// Crea la gerarchia degli oggetti.
body.AddChild(collision);
node.AddChild(body);
// Cambia il proprietario di `body`, ma non di `collision`.
body.Owner = node;
var scene = new PackedScene();
// Solo `node` e `body` sono ora impacchettati.
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("Si è verificato un errore durante il salvataggio della scena su disco.");
}
}
Tutorial
Metodi
can_instantiate() const |
|
get_state() const |
|
instantiate(edit_state: GenEditState = 0) const |
|
Enumerazioni
enum GenEditState: 🔗
GenEditState GEN_EDIT_STATE_DISABLED = 0
Se passato a instantiate(), blocca le modifiche allo stato della scena.
GenEditState GEN_EDIT_STATE_INSTANCE = 1
Se passato a instantiate(), fornisce risorse di scena locali alla scena locale.
Nota: Disponibile solo nelle build dell'editor.
GenEditState GEN_EDIT_STATE_MAIN = 2
Se passato a instantiate(), fornisce risorse di scena locali alla scena locale. Solo la scena principale dovrebbe ricevere lo stato di modifica principale.
Nota: Disponibile solo nelle build dell'editor.
GenEditState GEN_EDIT_STATE_MAIN_INHERITED = 3
È simile a GEN_EDIT_STATE_MAIN, ma per il caso in cui la scena viene istanziata per essere la base di un'altra.
Nota: Disponibile solo nelle build dell'editor.
Descrizioni dei metodi
bool can_instantiate() const 🔗
Restituisce true se il file di scena contiene nodi.
SceneState get_state() const 🔗
Restituisce il SceneState che rappresenta il contenuto del file di scena.
Node instantiate(edit_state: GenEditState = 0) const 🔗
Crea un'istanza della gerarchia dei nodi della scena. Attiva le istanziazioni delle scene figlio. Attiva una notifica Node.NOTIFICATION_SCENE_INSTANTIATED sul nodo radice.
Impacchetta il nodo path e tutti i suoi sottonodi posseduti in questo PackedScene. Tutti i dati esistenti saranno cancellati. Vedi Node.owner.