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
Успадковує: Resource < RefCounted < Object
Анотація послідовної сцени.
Опис
Спрощений інтерфейс для файлу сцени. Надає доступ до операцій і перевірок, які можна виконати на самому ресурсі сцени.
Можна використовувати для збереження вузла у файл. Під час збереження зберігається вузол, а також усі вузли, якими він володіє (див. властивість Node.owner).
Примітка: Вузол не повинен володіти собою.
Приклад: Завантажте збережену сцену:
# Використовуйте load() замість preload(), якщо шлях невідомий під час компіляції.
var scene = preload("res://scene.tscn").instantiate()
# Додайте вузол як дочірній вузол, до якого приєднаний скрипта.
add_child (scene)
// C# не має попереднього завантаження, тому вам потрібно завжди використовувати ResourceLoader.Load<PackedScene>().
var scene = ResourceLoader.Load<PackedScene>("res://scene.tscn").Instantiate();
// Додати вузол як дочірній вузол, до якого приєднаний скрипта.
AddChild(сцена);
Приклад: Збережіть вузол з іншими власниками. У наступному прикладі створено 3 об’єкти: Node2D (вузол), RigidBody2D (body) і CollisionObject2D (collision). колізія є дочірнім елементом body, який є дочірнім для node. Тільки body належить node, тому pack() збереже лише ці два вузли, але не колізію.
# Створення об'єктів.
var node = Node2D.new()
var body = RigidBody2D.new()
var collision = CollisionShape2D.new()
# Створення ієрархії об'єктів.
body.add_child(collision)
node.add_child(body)
# Змінити власника `body`, але не `collision`.
body.owner = node
var scene = PackedScene.new()
# Тепер упаковано лише `node` і `body`.
var result = scene.pack(node)
if result == OK:
var error = ResourceSaver.save(scene, "res://path/name.tscn") # Або "user://..."
if error != OK:
push_error("Під час збереження сцени на диск сталася помилка.")
// Створення об'єктів.
var node = new Node2D();
var body = new RigidBody2D();
var collision = new CollisionShape2D();
// Створення ієрархії об'єктів.
body.AddChild(collision);
node.AddChild(body);
// Змінити власника `body`, але не `collision`.
body.Owner = node;
var scene = new PackedScene();
// Тільки `node` і `body` тепер упаковані.
Результат помилки = scene.Pack(node);
if (результат == Error.Ok)
{
Error error = ResourceSaver.Save(scene, "res://path/name.tscn"); // Або "користувач //..."
if (error != Error. Ok)
{
GD.PushError("Під час збереження сцени на диск сталася помилка.");
}
}
Посібники
Методи
can_instantiate() const |
|
get_state() const |
|
instantiate(edit_state: GenEditState = 0) const |
|
Переліки
enum GenEditState: 🔗
GenEditState GEN_EDIT_STATE_DISABLED = 0
Якщо передано до instantiate(), блокує редагування стану сцени.
GenEditState GEN_EDIT_STATE_INSTANCE = 1
Якщо передано до instantiate(), надає локальні ресурси сцени локальній сцені.
Примітка: Доступно лише у збірках редактора.
GenEditState GEN_EDIT_STATE_MAIN = 2
Якщо передано до instantiate(), надає локальні ресурси сцени локальній сцені. Тільки головна сцена повинна отримувати основний стан редагування.
Примітка: Доступно лише у збірках редактора.
GenEditState GEN_EDIT_STATE_MAIN_INHERITED = 3
Це схоже на GEN_EDIT_STATE_MAIN, але для випадку, коли сцена створюється як основа для іншої.
Примітка: Доступно лише у збірках редактора.
Описи методів
bool can_instantiate() const 🔗
Повертає true, якщо файл сцени має вершини.
SceneState get_state() const 🔗
Повернення SceneState, що представляє вміст файлу сцени.
Node instantiate(edit_state: GenEditState = 0) const 🔗
Миттєва ієрархія сцени. Тригери дитячого сцена миттєве копіювання (s). Тригери Node. НЕФІКАЦІЯ_SCENE_INSTANTIATED повідомлення про кореневу вершину.
Пакує вузол path та всі належні йому підвузли в цей PackedScene. Будь-які існуючі дані будуть очищені. Див. Node.owner.