From 8ccfe573caf8edaed8cd4d45ccc42d3deab6d175 Mon Sep 17 00:00:00 2001 From: Mikhail <99481254+DCFApixels@users.noreply.github.com> Date: Mon, 11 Mar 2024 00:36:42 +0800 Subject: [PATCH] Update README-RU.md --- README-RU.md | 42 ++++++++++++++++++++++++++++++------------ 1 file changed, 30 insertions(+), 12 deletions(-) diff --git a/README-RU.md b/README-RU.md index 6219643..5362dfe 100644 --- a/README-RU.md +++ b/README-RU.md @@ -5,7 +5,7 @@

Version License - +Discord

# Auto Injections for [DragonECS](https://github.com/DCFApixels/DragonECS) @@ -16,11 +16,7 @@ Расширение призвано сократить объем кода, упростив инъекцию зависимостей, делая их автоматически. > **ВАЖНО!** Проект в стадии разработки. API может меняться. # Оглавление -- [Auto Injections for DragonECS](#auto-injections-for-dragonecs) -- [Оглавление](#оглавление) - [Установка](#установка) - - [Зависимости](#зависимости) - - [Версионирование](#версионирование) - [Интеграция](#интеграция) - [Инъекция зависимостей](#инъекция-зависимостей) - [Auto Builder аспектов](#auto-builder-аспектов) @@ -28,19 +24,31 @@ - [Пример кода](#пример-кода) - [Не null инъекции](#не-null-инъекции) +
+ # Установка -### Зависимости -Убедитесь что в проекте установлен фреймворк [DragonECS](https://github.com/DCFApixels/DragonECS). +Семантика версионирования - [Открыть](https://gist.github.com/DCFApixels/e53281d4628b19fe5278f3e77a7da9e8#file-dcfapixels_versioning_ru-md) +## Окружение +Обязательные требования: ++ Зависимость: [DragonECS](https://github.com/DCFApixels/DragonECS) ++ Минимальная версия C# 7.3; + +Опционально: ++ Игровые движки с C#: Unity, Godot, MonoGame и т.д. + +Протестированно: ++ **Unity:** Минимальная версия 2020.1.0; + +## Установка для Unity * ### Unity-модуль Поддерживается установка в виде Unity-модуля в при помощи добавления git-URL [в PackageManager](https://docs.unity3d.com/2023.2/Documentation/Manual/upm-ui-giturl.html) или ручного добавления в `Packages/manifest.json`: ``` https://github.com/DCFApixels/DragonECS-AutoInjections.git ``` -* ### В виде исходников -Фреймворк так же может быть добавлен в проект в виде исходников. +* ### В виде иходников +Фреймворк так же может быть добавлен в проект в виде исходников. -### Версионирование -В DragonECS применяется следующая семантика версионирования: [Открыть](https://gist.github.com/DCFApixels/e53281d4628b19fe5278f3e77a7da9e8#%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%BE%D0%BD%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5) +
# Интеграция Добавьте вызов метода `AutoInject()` для Builder-а пайплайна. Пример: @@ -54,7 +62,9 @@ _pipeline = EcsPipeline.New() .AutoInject() // Готово, автоматические внедрения активированы .BuildAndInit(); ``` - + +
+ # Инъекция зависимостей Атрибут `[EcsInject]` убирает необходимость использования интерфейса `IEcsInject`, поля помеченные таким атрибутом автоматически подхватят зависимости внедренные в Pipeline. Пример: ```csharp @@ -70,6 +80,9 @@ EcsDefaultWorld _world; //Количество аргументов должно быть равно 1. [EcsInject] void InjectWorld(EcsDefaultWorld world) => _world = world; ``` + +
+ # Auto Builder аспектов Так же AutoInjections упрощает построение аспектов. Для начала наследуйте аспект не от `EcsAspect`, а от `EcsAspectAuto`, а далее добавьте специальные атрибуты. @@ -85,6 +98,8 @@ EcsDefaultWorld _world; * `[IncImplicit(type)]` - добавит в включающее ограничение указанный в конструкторе тип `type`, аналог метода `Include`; * `[ExcImplicit(type)]` - добавит в исключающее ограничение указанный в конструкторе тип `type`, аналог метода `Exclude`; +
+ # Auto Runner-ы Для получения раннеров без добавления, есть атрибут `[BindWithRunner(type)]` и метод `GetRunnerAuto()`. ``` c# @@ -107,6 +122,7 @@ sealed class DoSomethingProcessRunner : EcsRunner, IDoSomet _pipeline.GetRunnerAuto().Do(); ``` +
# Пример кода ```csharp @@ -167,6 +183,8 @@ class VelocitySystem : IEcsRun, IEcsInject, IEcsInject +
+ # Не null инъекции Чтобы поле помеченное `[EcsInject]` было проинициализированно даже в случае отстувия инъекции, в конструктор атрибута можно передать тип болванку. В примере ниже поле `foo` получит экземпляр класса `Foo` из инъекции или экземпляр `FooDummy : Foo` если инъекции небыло.