PackedScene

Наследует: Resource < RefCounted < Object

Абстракция сериализованной сцены.

Описание

Упрощенный интерфейс к файлу сцены. Предоставляет доступ к операциям и проверкам, которые могут быть выполнены над самим ресурсом сцены.

Может использоваться для сохранения узла в файл. При сохранении узел, а также все узлы, которыми он владеет, сохраняются (см. свойство Node.owner).

Примечание: Узел не обязательно должен владеть собой.

Пример: Загрузка сохраненной сцены:

# Используйте load() вместо preload(), если путь неизвестен во время компиляции.
var scene = preload("res://scene.tscn").instantiate()
# Добавьте узел как дочерний узел узла, к которому прикреплен скрипт.
add_child(scene)

Пример: Сохраните узел с разными владельцами. Следующий пример создает 3 объекта: Node2D (node), RigidBody2D (body) и CollisionObject2D (collision). collision является дочерним элементом body, который является дочерним элементом node. Только body принадлежит node, и pack() сохранит только эти два узла, но не collision.

# Создайте объекты.
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("Произошла ошибка при сохранении сцены на диск.")

Обучающие материалы

Методы

bool

can_instantiate() const

SceneState

get_state() const

Node

instantiate(edit_state: GenEditState = 0) const

Error

pack(path: Node)


Перечисления

enum GenEditState: 🔗

GenEditState GEN_EDIT_STATE_DISABLED = 0

При передаче в instantiate() блокирует редактирование состояния сцены.

GenEditState GEN_EDIT_STATE_INSTANCE = 1

Если передано в instanceiate(), предоставляет локальные ресурсы сцены локальной сцене.

Примечание: Доступно только в сборках редактора.

GenEditState GEN_EDIT_STATE_MAIN = 2

Если передано в instanceiate(), предоставляет локальные ресурсы сцены локальной сцене. Только основная сцена должна получать основное состояние редактирования.

Примечание: Доступно только в сборках редактора.

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 🔗

Создает экземпляр иерархии узлов сцены. Запускает создание дочерних экземпляров сцен. Запускает уведомление Node.NOTIFICATION_SCENE_INSTANTIATED на корневом узле.


Error pack(path: Node) 🔗

Упаковывает узел path и все принадлежащие ему подузлы в этот PackedScene. Все существующие данные будут очищены. См. Node.owner.