Awesome
LeoEcsLite Entity Converter
Read this in other languages: Русский, English
Обеспечивает автоматическое создание сущностей с компонентами через инспектор.
Проверено на Unity 2020.3 и содержит asmdef-описания для компиляции в виде отдельных сборок и уменьшения времени рекомпиляции основного проекта.
Для обратной связи https://t.me/AndreyBirchenko
Установка
Внимание! Для работы этого расширения сначала установите LeoEcsLite
В виде unity модуля
Поддерживается установка в виде unity-модуля через git-ссылку в PackageManager или прямое редактирование Packages/manifest.json
:
"com.anbi.leoecslite.entityconverter": "https://github.com/AndreyBirchenko/LeoEcsLiteEntityConverter.git",
Интеграция
var systems = new EcsSystems (new EcsWorld ());
systems
.Add (new System1 ())
.AddWorld (new EcsWorld (), "events")
// ...
.ConvertScene()
.Init ();
Использование
Чтобы добавить компонент на гейм объект сначала создайте класс конвертер и унаследуйте его от ComponentConverter<T>
ВАЖНО: У компонента должен быть атрибут [Serializable]
если вы хотите чтобы его поля отображались в инспекторе.
[Serializable]
public struct TestComponent
{
public int Value;
}
public class TestComponentConverter : ComponentConverter<TestComponent>
{
}
После этого вы сможете добавить компонент на гейм объект через кнопку AddComponent
Вместе с вашим конвертером автоматически добавится ещё и ComponentsContainer
он нужен для конвертации.
Если вы хотите чтобы после конвертации все ненужные компоненты удалились с гейм объекта поставьте галочку DestroyAfterConversion
Теперь когда вы запустите проект будет автоматически создана сущность с компонентом TestComponent
и значением Value
из инспектора
Конвертация по ходу исполнения программы
Вы можете конвертировать объекты при создании
var objectView = EcsConverter.InstantiateAndCreateEntity(ObjectPrefab, _ecsWorld);
Для этого на префабе который вы собираетесь конвертировать должен быть ComponentsContainer