mirror of
https://github.com/DCFApixels/DragonECS.git
synced 2025-09-18 01:44:35 +08:00
Merge branch 'main' into dev
This commit is contained in:
commit
9561b7139b
36
README-RU.md
36
README-RU.md
@ -15,7 +15,7 @@
|
|||||||
Данный [ECS](https://en.wikipedia.org/wiki/Entity_component_system) Фреймворк нацелен на максимальную удобность, модульность, расширяемость и производительность динамического изменения сущностей. Без генерации кода и зависимостей. Вднохновлен [LeoEcs](https://github.com/Leopotam/ecslite).
|
Данный [ECS](https://en.wikipedia.org/wiki/Entity_component_system) Фреймворк нацелен на максимальную удобность, модульность, расширяемость и производительность динамического изменения сущностей. Без генерации кода и зависимостей. Вднохновлен [LeoEcs](https://github.com/Leopotam/ecslite).
|
||||||
|
|
||||||
> [!IMPORTANT]
|
> [!IMPORTANT]
|
||||||
> И с Новым Годом
|
> 新年快乐!
|
||||||
|
|
||||||
> [!WARNING]
|
> [!WARNING]
|
||||||
> Проект в стадии разработки. API может меняться.
|
> Проект в стадии разработки. API может меняться.
|
||||||
@ -36,6 +36,7 @@
|
|||||||
- [Процессы](#процессы)
|
- [Процессы](#процессы)
|
||||||
- [Мир](#мир)
|
- [Мир](#мир)
|
||||||
- [Компоненты мира](#компоненты-мира)
|
- [Компоненты мира](#компоненты-мира)
|
||||||
|
- [Конфигурация мира](#конфигурация-мира)
|
||||||
- [Пул](#пул)
|
- [Пул](#пул)
|
||||||
- [Аспект](#аспект)
|
- [Аспект](#аспект)
|
||||||
- [Запросы](#запросы)
|
- [Запросы](#запросы)
|
||||||
@ -53,6 +54,15 @@
|
|||||||
</br>
|
</br>
|
||||||
|
|
||||||
# Установка
|
# Установка
|
||||||
|
Семантика версионирования - [Открыть](https://gist.github.com/DCFApixels/e53281d4628b19fe5278f3e77a7da9e8#file-dcfapixels_versioning_ru-md)
|
||||||
|
## Окружение
|
||||||
|
Обязательные требования:
|
||||||
|
+ Минимальная версия C# 7.3;
|
||||||
|
|
||||||
|
Опционально:
|
||||||
|
+ Минимальная версия Unity 2020.1.0;
|
||||||
|
|
||||||
|
## Установка для Unity
|
||||||
* ### Unity-модуль
|
* ### Unity-модуль
|
||||||
Поддерживается установка в виде Unity-модуля в при помощи добавления git-URL [в PackageManager](https://docs.unity3d.com/2023.2/Documentation/Manual/upm-ui-giturl.html) или ручного добавления в `Packages/manifest.json`:
|
Поддерживается установка в виде Unity-модуля в при помощи добавления git-URL [в PackageManager](https://docs.unity3d.com/2023.2/Documentation/Manual/upm-ui-giturl.html) или ручного добавления в `Packages/manifest.json`:
|
||||||
```
|
```
|
||||||
@ -61,9 +71,6 @@ https://github.com/DCFApixels/DragonECS.git
|
|||||||
* ### В виде иходников
|
* ### В виде иходников
|
||||||
Фреймворк так же может быть добавлен в проект в виде исходников.
|
Фреймворк так же может быть добавлен в проект в виде исходников.
|
||||||
|
|
||||||
### Версионирование
|
|
||||||
В DragonECS применяется следующая семантика версионирования: [Открыть](https://gist.github.com/DCFApixels/e53281d4628b19fe5278f3e77a7da9e8#file-dcfapixels_versioning_ru-md)
|
|
||||||
|
|
||||||
</br>
|
</br>
|
||||||
|
|
||||||
# Основные концепции
|
# Основные концепции
|
||||||
@ -181,9 +188,9 @@ EcsPipelone pipeline = EcsPipeline.New()
|
|||||||
|
|
||||||
//...
|
//...
|
||||||
|
|
||||||
class SomeSystem : IInject<SomeData>, IEcsRunProcess
|
class SomeSystem : IEcsInject<SomeData>, IEcsRunProcess
|
||||||
{
|
{
|
||||||
// Для внедрения используется интерфейс IInject<T> и его метод Inject(T obj)
|
// Для внедрения используется интерфейс IEcsInject<T> и его метод Inject(T obj)
|
||||||
SomeData _someData
|
SomeData _someData
|
||||||
public void Inject(SomeData obj) => _someData = obj;
|
public void Inject(SomeData obj) => _someData = obj;
|
||||||
|
|
||||||
@ -349,10 +356,18 @@ public struct WorldComponent : IEcsWorldComponent<WorldComponent>
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
> Компоненты можно применять для создания расширений в связке с методами расширений.
|
### Конфигурация мира
|
||||||
|
При создании мира, в конструктор можно передать реализацию интерфейса `IEcsWorldConfig`. Реализующие его классы своего рода контейнеры для конфигов. По умолчанию уже реализован стандартный контейнер `EcsWorldConfig` и `Get`/`Set` методы для базовой конфигурации мира.
|
||||||
|
|
||||||
|
``` csharp
|
||||||
|
EcsWorldConfig config = new EcsWorldConfig()
|
||||||
|
.Set_EntitiesCapacity(512);
|
||||||
|
_world = new EcsDefaultWorld(config);
|
||||||
|
```
|
||||||
|
|
||||||
|
> Компоненты и конфиги можно применять для создания расширений в связке с методами расширений.
|
||||||
## Пул
|
## Пул
|
||||||
Является контейнером для компонентов, предоставляет методы для добавления/чтения/редактирования/удаления компонентов на сущности. Есть несколько видов пулов, для разных целей:
|
Является контейнером для компонентов, предоставляет методы для добавления/чтения/редактирования/удаления компонентов на сущности. Есть несколько видов пулов, для разных целей:
|
||||||
* `EcsPool` - универсальный пул, хранит struct-компоненты реализующие интерфейс `IEcsComponent`;
|
* `EcsPool` - универсальный пул, хранит struct-компоненты реализующие интерфейс `IEcsComponent`;
|
||||||
@ -759,6 +774,11 @@ The type or namespace name 'ReadOnlySpan<>' could not be found (are you missing
|
|||||||
```
|
```
|
||||||
Чтобы починить добавте директиву `ENABLE_DUMMY_SPAN` в `Project Settings/Player/Other Settings/Scripting Define Symbols`.
|
Чтобы починить добавте директиву `ENABLE_DUMMY_SPAN` в `Project Settings/Player/Other Settings/Scripting Define Symbols`.
|
||||||
|
|
||||||
|
## Как Выключать/Включать системы?
|
||||||
|
Напряму - никак. </br>
|
||||||
|
Обычно потребность выключить/включить систему появляется когда поменялось общее состояние игры, это может так же значить что нужно переключить сразу группу систем, все это в совокупности можно рассматривать как измннеия процессов. Есть 2 решения:</br>
|
||||||
|
+ Если измненеия процесса глобальные, то создать новый `EcsPipeline` и в цикле обновления движка запускать соотвествующий пайплайн.
|
||||||
|
+ Разделить `IEcsRunProcess` на несколько процессов и в цикле обновления движка запускать соотвествующий процесс. Для этого создайте новый интерфейс процесса, раннер для запуска этого интерфейса и получайте раннер через `EcsPipeline.GetRunner<T>()`.
|
||||||
</br>
|
</br>
|
||||||
|
|
||||||
# Обратная связь
|
# Обратная связь
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
The [ECS](https://en.wikipedia.org/wiki/Entity_component_system) Framework aims to maximize usability, modularity, extensibility and performance of dynamic entity changes. Without code generation and dependencies. Inspired by [LeoEcs](https://github.com/Leopotam/ecslite).
|
The [ECS](https://en.wikipedia.org/wiki/Entity_component_system) Framework aims to maximize usability, modularity, extensibility and performance of dynamic entity changes. Without code generation and dependencies. Inspired by [LeoEcs](https://github.com/Leopotam/ecslite).
|
||||||
|
|
||||||
> [!IMPORTANT]
|
> [!IMPORTANT]
|
||||||
> And a Happy New Year.
|
> 新年快乐!
|
||||||
|
|
||||||
> [!WARNING]
|
> [!WARNING]
|
||||||
> The project is a work in progress, API may change.
|
> The project is a work in progress, API may change.
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
"displayName": "DragonECS",
|
"displayName": "DragonECS",
|
||||||
"description": "C# Entity Component System Framework",
|
"description": "C# Entity Component System Framework",
|
||||||
"unity": "2020.3",
|
"unity": "2020.3",
|
||||||
"version": "0.8.5",
|
"version": "0.8.8",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/DCFApixels/DragonECS.git"
|
"url": "https://github.com/DCFApixels/DragonECS.git"
|
||||||
|
Loading…
Reference in New Issue
Block a user