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.