mirror of
https://github.com/DCFApixels/DragonECS.git
synced 2025-09-17 17:34:36 +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).
|
||||
|
||||
> [!IMPORTANT]
|
||||
> И с Новым Годом
|
||||
> 新年快乐!
|
||||
|
||||
> [!WARNING]
|
||||
> Проект в стадии разработки. API может меняться.
|
||||
@ -36,6 +36,7 @@
|
||||
- [Процессы](#процессы)
|
||||
- [Мир](#мир)
|
||||
- [Компоненты мира](#компоненты-мира)
|
||||
- [Конфигурация мира](#конфигурация-мира)
|
||||
- [Пул](#пул)
|
||||
- [Аспект](#аспект)
|
||||
- [Запросы](#запросы)
|
||||
@ -53,6 +54,15 @@
|
||||
</br>
|
||||
|
||||
# Установка
|
||||
Семантика версионирования - [Открыть](https://gist.github.com/DCFApixels/e53281d4628b19fe5278f3e77a7da9e8#file-dcfapixels_versioning_ru-md)
|
||||
## Окружение
|
||||
Обязательные требования:
|
||||
+ Минимальная версия C# 7.3;
|
||||
|
||||
Опционально:
|
||||
+ Минимальная версия 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`:
|
||||
```
|
||||
@ -61,9 +71,6 @@ https://github.com/DCFApixels/DragonECS.git
|
||||
* ### В виде иходников
|
||||
Фреймворк так же может быть добавлен в проект в виде исходников.
|
||||
|
||||
### Версионирование
|
||||
В DragonECS применяется следующая семантика версионирования: [Открыть](https://gist.github.com/DCFApixels/e53281d4628b19fe5278f3e77a7da9e8#file-dcfapixels_versioning_ru-md)
|
||||
|
||||
</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
|
||||
public void Inject(SomeData obj) => _someData = obj;
|
||||
|
||||
@ -349,10 +356,18 @@ public struct WorldComponent : IEcsWorldComponent<WorldComponent>
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
> Компоненты можно применять для создания расширений в связке с методами расширений.
|
||||
### Конфигурация мира
|
||||
При создании мира, в конструктор можно передать реализацию интерфейса `IEcsWorldConfig`. Реализующие его классы своего рода контейнеры для конфигов. По умолчанию уже реализован стандартный контейнер `EcsWorldConfig` и `Get`/`Set` методы для базовой конфигурации мира.
|
||||
|
||||
``` csharp
|
||||
EcsWorldConfig config = new EcsWorldConfig()
|
||||
.Set_EntitiesCapacity(512);
|
||||
_world = new EcsDefaultWorld(config);
|
||||
```
|
||||
|
||||
> Компоненты и конфиги можно применять для создания расширений в связке с методами расширений.
|
||||
## Пул
|
||||
Является контейнером для компонентов, предоставляет методы для добавления/чтения/редактирования/удаления компонентов на сущности. Есть несколько видов пулов, для разных целей:
|
||||
* `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`.
|
||||
|
||||
## Как Выключать/Включать системы?
|
||||
Напряму - никак. </br>
|
||||
Обычно потребность выключить/включить систему появляется когда поменялось общее состояние игры, это может так же значить что нужно переключить сразу группу систем, все это в совокупности можно рассматривать как измннеия процессов. Есть 2 решения:</br>
|
||||
+ Если измненеия процесса глобальные, то создать новый `EcsPipeline` и в цикле обновления движка запускать соотвествующий пайплайн.
|
||||
+ Разделить `IEcsRunProcess` на несколько процессов и в цикле обновления движка запускать соотвествующий процесс. Для этого создайте новый интерфейс процесса, раннер для запуска этого интерфейса и получайте раннер через `EcsPipeline.GetRunner<T>()`.
|
||||
</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).
|
||||
|
||||
> [!IMPORTANT]
|
||||
> And a Happy New Year.
|
||||
> 新年快乐!
|
||||
|
||||
> [!WARNING]
|
||||
> The project is a work in progress, API may change.
|
||||
|
@ -8,7 +8,7 @@
|
||||
"displayName": "DragonECS",
|
||||
"description": "C# Entity Component System Framework",
|
||||
"unity": "2020.3",
|
||||
"version": "0.8.5",
|
||||
"version": "0.8.8",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/DCFApixels/DragonECS.git"
|
||||
|
Loading…
Reference in New Issue
Block a user