DragonECS-Unity/README-RU.md
2024-03-11 06:32:13 +08:00

6.1 KiB
Raw Blame History

Version GitHub Discord

Интеграция с Unity для DragonECS

Languages: Русский English(WIP)

Расширение добавит набор инструментов для дебага и связи с движком Unity.

Warning

Проект в стадии разработки. API может меняться.
Readme еще не завершен

Оглавление


Установка

Семантика версионирования - Открыть

Окружение

Обязательные требования:

  • Зависимость: DragonECS
  • Минимальная версия C# 7.3;
  • Минимальная версия Unity 2021.2.0;

Протестированно:

  • Unity: Минимальная версия 2021.2.0;

Установка для Unity

  • Unity-модуль

Поддерживается установка в виде Unity-модуля в при помощи добавления git-URL в PackageManager или ручного добавления в Packages/manifest.json:

https://github.com/DCFApixels/DragonECS-Unity.git
  • В виде иходников

Фреймворк так же может быть добавлен в проект в виде исходников.


Debug

Debug Модуль

Подключение модуля отладки в Unity.

EcsDefaultWorld _world = new EcsDefaultWorld();
EcsEventWorld _eventWorld = new EcsDefaultWorld();

_pipeline = EcsPipeline.New()
    //...
    // Подключение и инициализация отладки для миров _world и _eventWorld
    .AddUnityDebug(_world, _eventWorld)
    //...
    .BuildAndInit();

Debug Сервис

UnityDebugService- реализация Debug-сервиса для EcsDebug. В редакторе по умолчанию автоматически инициализируется и связывает EcsDebug.Print с консолью юнити, EcsProfilerMarker c профайлером и т.д.

//Ручная активация.
UnityDebugService.Activate();

//Выведет сообщение в консоле Unity.
EcsDebug.Print(); 

var someMarker = new EcsProfilerMarker("SomeMarker");
someMarker.Begin();
//время выполнения этого участка будет отражено в профайлере юнити.
someMarker.End();

//Остановка игрового режима.
EcsDebug.Break();

Визуальная отладка

image

Pipeline

image image

World

image

Entity

image

Шаблоны

Шаблоны - это настраиваемые наборы компонентов которые можно применить к сущностям. Шаблоны должны реализовавыть интерфейс ITemplateNode.

ITemplateNode someSamplate = /*...*/;
//...
foreach (var e in _world.Where(out Aspect a))
{
    // Применение шаблона сущности.
    someSamplate.Apply(e, _world.id);
}
// Применение шаблона сразу при создании сущности.
int e = _world.NewEntity(someSamplate);

По умолчанию расширение содержит 2 вида шаблонов: ScriptableEntityTemplate и MonoEntityTemplate.

ScriptableEntityTemplate

Хранится как отдельынй ассет. Наследуется от ScriptableObject.
Дейсвия чтобы создать ScriptableEntityTemplate ассет:

image

Пример:

image

MonoEntityTemplate

Крепится к GameObject. Наследуется от MonoBehaviour.
Дейсвия чтобы добавить MonoEntityTemplate на GameObject:

image

Пример:

image

Связь с GameObject