Cave: Руководство по началу работы
Понимание Сущностей
Lesson 9 of 19 • 25 XP
Keep your place in this quest
Log in or sign up for free to subscribe, follow lesson progress, and access more learning content.
Понимание сущностей
Теперь давайте разберемся с понятием Сущность в Cave. Сущности — это основные объекты внутри сцены Cave.
Если сцена — это уровень, меню или тестовое пространство, то сущности — это те вещи, которые существуют внутри этого пространства. Например, игрок, враг, дверь, свет, камера, триггер, кнопка UI, источник звука и папка могут быть сущностями.
В этом уроке вы узнаете о:
- Названиях.
- Идентификаторах.
- Активном состоянии.
- Родительстве.
- Папках.
- Порядке иерархии.
- Тегах и свойствах.
- Экземплярах шаблонов.
Эти детали могут показаться незначительными, но они имеют большое значение, когда сцена растет от нескольких объектов до полноценного уровня.
Что такое сущность?
Сущность — это объект в сцене.
Сущность может представлять:
- Видимый 3D-объект.
- Невидимого помощника.
- Триггер игрового процесса.
- Элемент UI.
- Источник звука.
- Или просто папку, используемую для организации.

Например, ящик — это видимая сущность. Точка спавна может быть невидимой во время игрового процесса, но это все еще сущность, потому что она указывает на то, где что-то должно произойти.
Cave сохраняет эту идею в простоте: сцены строятся из сущностей.
Сущности — это контейнеры компонентов
Сущности не делают много по отдельности, их функции приходят от компонентов. Например:
| Сущность | Компоненты, которые могут быть у неё |
|---|---|
| Ящик | Трансформация, Меш, Жесткое тело. |
| Игрок | Трансформация, Характер, Камера, Python, Аудио. |
| Дверь | Трансформация, Меш, Жесткое тело, Логические кирпичи. |
| Фонарь | Трансформация, Меш, Свет, Аудио. |
| Кнопка | Трансформация, Элемент UI, Логические кирпичи или Python. |
| --- |
Вот почему сущности гибкие. Дверь не является полностью отдельным жестко закодированным типом объекта. Это сущность, состоящая из частей: меша для ее отображения, коллизии, чтобы блокировать игрока, и логики для открывания или закрывания.
Когда вы понимаете это, создание объектов становится более практичным. Вы перестаете спрашивать «какому типу объекта мне нужен?» и начинаете спрашивать «какие компоненты нужны этой сущности?».
Названия сущностей
У каждой сущности есть имя. Вы можете переименовать сущность через меню быстрого редактирования в Scene Graph или на вкладке Properties.
Стоит отметить, что названия предназначены в первую очередь для людей:
- Они упрощают поиск в
Scene Graph. - Они упрощают отладку.
- Они упрощают обсуждение объектов с другими участниками команды.
- Они помогают вам понять вашу собственную сцену позже.
Cave не требует, чтобы каждое имя сущности было уникальным. Несколько сущностей могут иметь одно и то же имя, что полезно для повторяющихся объектов, таких как камни, монеты, ящики или враги.
Тем не менее, не рассматривайте имя как единственный надежный идентификатор сущности.
Хорошие имена просты и описательны:
| Слабое имя | Лучше имя |
|---|---|
Mesh |
Деревянный ящик |
Empty |
Старт игрока |
Light |
Свет у входа в пещеру |
Folder |
Группа врагов |
Цель не в том, чтобы сделать имена красивыми. Цель — сделать сцену читабельной.
Названия сущностей также могут использоваться в коде для переноса конкретной сущности из вашей сцены, но поскольку вы уже знаете, что несколько сущностей могут иметь одно и то же имя, вы также должны знать, что при переносе сущности по имени, если существует несколько сущностей с этим именем, это может привести к неопределенному поведению, поскольку у вас нет гарантии, какую сущность сцена вернет для этого имени. Она вернет первую, которую найдет при поиске вашего запроса. Поэтому, если для вас важно получить конкретный объект через код, например игрока, убедитесь, что вы дали ему уникальное имя.
Идентификаторы сущностей
Cave отслеживает сущности внутренне с помощью уникальных идентификаторов.
Вам обычно не нужно редактировать или беспокоиться об этих идентификаторах. Они существуют, чтобы движок мог надежно идентифицировать сущности, даже когда названия повторяются. На самом деле уникальные идентификаторы неизменяемы, что означает, что вы не можете их изменить. Они автоматически назначаются движком.
Запомните это:
| Вещь | Цель |
|---|---|
| Имя | Помогает вам читать сцену. |
| Идентификатор | Помогает Cave отслеживать объект внутренне. |
Если два врага оба называются Enemy, Cave все равно может отличить их за кулисами.
Активное состояние сущностей
Сущности могут быть активными или неактивными.

В Scene Graph и на вкладке Properties это отображается с помощью контроля активности в виде глаза.
| Состояние | Значение |
|---|---|
| Активно | Сущность участвует в сцене нормально. |
| Неактивно | Сущность остается в сцене, но отключена. |
В зависимости от сущности и её компонентов отключение может повлиять на:
- Отображение.
- Физику.
- Логику.
- Обновления времени выполнения.
- Поведение компонентов.
Неактивная сущность не будет вызывать обновления своих компонентов, и в тот момент, когда вы отключаете сущность, будет также вызван метод конца компонента, и когда вы снова активируете ее, будет вызван метод старта компонента.
Вы можете с уверенностью предположить, что неактивная сущность не будет вносить вклад в физические расчеты сцены, логику, триггеры и т. д. Если только вы не запрашиваете эти сущности из сцены и не игнорируете тот факт, что они отключены, конечно.
Практическая идея проста: неактивное означает «сохранено здесь, но в настоящее время не участвует».
Отключение против удаления
Отключение и удаление — это не одно и то же.
| Действие | Результат |
|---|---|
| Отключить | Сохраняет сущность в сцене, но отключает её. |
| Удалить | Убирает сущность из сцены. |
Отключите сущность, когда вы захотите использовать её снова позже. Удалите сущность, когда вы уверены, что она должна быть удалена.
Для тестирования отключение часто безопаснее. Если столкновение с врагом кажется слишком сложным, сначала отключите несколько врагов и протестируйте уровень. Если изменения выдались правильными, вы можете очистить сцену позже.
Родительство сущностей
Сущности могут быть подчинены другим сущностям.
Когда у сущности есть родитель, она становится частью иерархии этого родителя. Если вы переместите родителя, дети переместятся вместе с ним.
Родительство полезно для:
- Меча, прикрепленного к персонажу.
- Света, прикрепленного к фонарю.
- Камеры, прикрепленной к транспортному средству.
- Группы реквизита, организованной под папкой.
- Элементов UI, сгруппированных под родительской панелью.
Родительство также влияет на трансформации. Трансформация дочерней сущности оценивается относительно родительской иерархии.
Это один из самых простых способов держать связанные объекты вместе.
Папки-сущности
Папки-сущности используются для организации. Они особенно полезны, когда ваша сцена начинает содержать много объектов.
По определению, тем, что делает сущность папкой, является в основном отсутствие компонентов в ней, особенно компонента Трансформации и элемента UI, потому что если у сущности нет трансформации в мире и нет элемента UI, она, вероятно, будет использоваться как папка. Но это в основном вопрос именования, так что имейте это в виду.
Общие группы папок включают:
- Среда.
- Игровые триггеры.
- Враги.
- Реквизит.
- Освещение.
- UI.
- Аудио.
- Отладочные помощники.
Папки не только о порядке. Чистый Scene Graph помогает вам быстрее работать, потому что вы можете найти нужный объект, не просматривая сотни разрозненных сущностей.
Порядок иерархии сущностей
Порядок сущностей в Scene Graph важен для организации, а в некоторых случаях он может повлиять на то, как вещи обрабатываются или отображаются.
Если вы откроете папку и увидите следующую структуру, это будет труднее просмотреть:
Ящик
Игрок
Свет
Враг
Камера
Камень
Триггер
Но это легче:
Игрок
Камера
Освещение
Враги
Окружение
Игровые триггеры
Цель не в том, чтобы сделать иерархию красивой, а в том, чтобы сделать её полезной.
Если вы можете открыть сцену через неделю после вашего последнего визита и сразу понять, где находятся важные объекты, ваша иерархия выполняет свою работу.
Важно отметить: из-за того, как движок оптимизирует свою внутреннюю сцену графа, порядок, в котором сущности появляются на верхнем уровне, то есть сущности, которые не имеют родителя, будут случайными, но дочерние сущности могут иметь определенный порядок, и вы можете организовать их, щелкнув правой кнопкой мыши на каждую отдельную сущность в редакторе и переместив её вверх, вниз, вверх или вниз.
Свойства и теги сущностей
Сущности могут хранить пользовательские свойства и теги.
| Функция | Цель |
|---|---|
| Свойство | Хранит редактируемое значение. |
| Тег | Добавляет метку, используемую для идентификации или группировки. |
Например, у врага может быть:
- Тег
Damageable. - Свойство
health. - Свойство
team. - Свойство
patrolRadius.
Скрипты и логика могут использовать эти данные для принятия решений.
Система урона может искать сущности с тегом Damageable. Скрипт врага может считывать patrolRadius, чтобы определить, насколько далеко враг может блуждать.
Свойства и теги позволяют привязать игровой смысл к сущности, не создавая специальный компонент для каждого небольшого куска данных.
Теги быстрее запрашиваются, чем свойства, поэтому они лучше, например, для идентификации сущности, которая может получать урон или является врагом и т. д. Но они не несут в себе никакого значения. Свойство медленнее запрашивается, но вы можете добавить значение. В терминах кодирования, свойства сущностей — это буквально словари Python.
Предпросмотр шаблона сущности
Некоторые сущности являются экземплярами шаблонов сущностей. Игрок, которого вы найдете в новом проекте Cave по умолчанию, например, является экземпляром этого шаблона здесь:

Экземпляры шаблонов отображаются по-другому в Scene Graph, используя цвет шаблона Cave. Это помогает вам распознать, что сущность приходит из многоразового шаблона актива.
Когда сущность является экземпляром шаблона:
- Его внутренние дочерние элементы принадлежат шаблону.
- Размещенный экземпляр принадлежит сцене.
- Структура шаблона редактируется при открытии активов шаблона.
- Локальные значения все еще можно настраивать, когда они выставлены в качестве свойств.
Следующий урок более подробно объясняет шаблоны сущностей.
Ментальная модель сущности
Думайте о сущности как о маленьком контейнере:
- Имя помогает вам понять его.
- ID помогает Cave отслеживать его.
- Активное состояние контролирует, участвует ли он.
- Родитель контролирует, где он находится.
- Компоненты определяют, что он делает.
- Свойства и теги описывают дополнительные данные игрового процесса.
Это и есть основа построения сцены в Cave.
Когда сущности становятся понятными, граф сцены становится гораздо более чем просто списком объектов. Он становится структурой вашего игрового мира.