ecsproto.parenting

0
README.md

Logo

Взаимоотношение родитель-ребенок для сущностей

Поддержка иерархических зависимостей между сущностями для LeoECS Proto.

ВАЖНО! Требует C#9 (или Unity >=2021.2).

ВАЖНО! Зависит от: Leopotam.EcsProto, Leopotam.EcsProto.QoL.

ВАЖНО! Не забывайте использовать

DEBUG
-версии билдов для разработки и
RELEASE
-версии билдов для релизов: все внутренние проверки/исключения будут работать только в
DEBUG
-версиях и удалены для увеличения производительности в
RELEASE
-версиях.

ВАЖНО! Проверено на Unity 2021.3 (не зависит от нее) и содержит asmdef-описания для компиляции в виде отдельных сборок и уменьшения времени рекомпиляции основного проекта.

Социальные ресурсы

Официальный блог: https://leopotam.ru

Установка

В виде unity модуля

Поддерживается установка в виде unity-модуля через git-ссылку в PackageManager или прямое редактирование

Packages/manifest.json
:

"ru.leopotam.ecsproto.parenting": "https://gitverse.ru/leopotam/ecsproto.parenting.git",

В виде исходников

Код так же может быть склонирован или получен в виде архива со страницы релизов.

Прочие источники

Официальная работоспособная версия размещена по адресу https://gitverse.ru/leopotam/ecsproto.parenting, все остальные версии (включая nuget, npm и прочие репозитории) являются неофициальными клонами или сторонним кодом с неизвестным содержимым.

Основные типы

Родитель

Это специальный скрытый компонент, добавляющийся на сущность, вся работа с ним скрыта за апи в аспекте модуля. Реализован в виде типа

ParentingParent
.

Ребенок

Это специальный скрытый компонент, добавляющийся на сущность, вся работа с ним скрыта за апи в аспекте модуля. Реализован в виде типа

ParentingChild
.

Аспект

Все апи по управлению связями находится в аспекте с типом

ParentingAspect

ВАЖНО! В момент вызова

ParentingAspect.SetParent()
в
DEBUG
-версии происходит проверка на циклическую иерархию с исключением в случае обнаружения.

Подключение модуля

Подключение в ручном режиме

Для подключения достаточно добавить аспект модуля

ParentingAspect
в аспект мира:

Так же для автоматического удаления иерархии нужно добавить систему:

Подключение модуля целиком в автоматическом режиме

Лицензия

Расширение выпускается под лицензией MIT-ZARYA, подробности тут.

ЧаВо

Я хочу отключить автоматическое удаление иерархии и вызывать его руками, как я могу это сделать?

Для отключения автоматического удаления иерархии надо передать опциональный флаг в конструктор модуля:

Когда требуется выполнить очистку, следует вызывать следующий метод: