Update README-RU.md

This commit is contained in:
Mikhail 2024-03-07 08:21:01 +08:00
parent 3ab89c7a4b
commit 600dc47d33

View File

@ -131,10 +131,10 @@ struct PlayerTag : IEcsTagComponent {}
```c# ```c#
class SomeSystem : IEcsPreInit, IEcsInit, IEcsRun, IEcsDestroy class SomeSystem : IEcsPreInit, IEcsInit, IEcsRun, IEcsDestroy
{ {
// Будет вызван один раз в момент работы EcsPipeline.Init() и до срабатывания IEcsInitProcess.Init() // Будет вызван один раз в момент работы EcsPipeline.Init() и до срабатывания IEcsInit.Init()
public void PreInit () { } public void PreInit () { }
// Будет вызван один раз в момент работы EcsPipeline.Init() и после срабатывания IEcsPreInitProcess.PreInit() // Будет вызван один раз в момент работы EcsPipeline.Init() и после срабатывания IEcsPreInit.PreInit()
public void Init () { } public void Init () { }
// Будет вызван один раз в момент работы EcsPipeline.Run(). // Будет вызван один раз в момент работы EcsPipeline.Run().
@ -187,11 +187,16 @@ EcsPipelone pipeline = EcsPipeline.New()
//... //...
// Для внедрения используется интерфейс IEcsInject<T> и его метод Inject(T obj) // Для внедрения используется интерфейс IEcsInject<T> и его метод Inject(T obj)
class SomeSystem : IEcsInject<SomeDataA>, IEcsRunProcess class SomeSystem : IEcsInject<SomeDataA>, IEcsRun
{ {
SomeDataA _someDataA SomeDataA _someDataA
//obj будет экземпляром типа SomeDataB //obj будет экземпляром типа SomeDataB
public void Inject(SomeDataA obj) => _someDataA = obj; public void Inject(SomeDataA obj) => _someDataA = obj;
public void Run ()
{
_someDataA.DoSomething();
}
} }
``` ```
### Модули ### Модули
@ -480,18 +485,18 @@ public class EcsRoot : MonoBehaviour
// Завершение построения пайплайна. // Завершение построения пайплайна.
.Build(); .Build();
//Иницивлизация пайплайна и запуск IEcsPreInitProcess.PreInit //Иницивлизация пайплайна и запуск IEcsPreInit.PreInit
//и IEcsInitProcess.Init у всех добавленных систем //и IEcsInit.Init у всех добавленных систем
_pipeline.Init(); _pipeline.Init();
} }
private void Update() private void Update()
{ {
//Запуск IEcsRunProcess.Run у всех добавленных систем //Запуск IEcsRun.Run у всех добавленных систем
_pipeline.Run(); _pipeline.Run();
} }
private void OnDestroy() private void OnDestroy()
{ {
//Запускает IEcsDestroyInitProcess.Destroy у всех добавленных систем //Запускает IEcsDestroyInit.Destroy у всех добавленных систем
_pipeline.Destroy(); _pipeline.Destroy();
_pipeline = null; _pipeline = null;
//Обязательно удалять миры которые больше не будут использованы //Обязательно удалять миры которые больше не будут использованы
@ -526,22 +531,22 @@ public class EcsRoot
// Завершение построения пайплайна. // Завершение построения пайплайна.
.Build(); .Build();
// Иницивлизация пайплайна и запуск IEcsPreInitProcess.PreInit // Иницивлизация пайплайна и запуск IEcsPreInit.PreInit
// и IEcsInitProcess.Init у всех добавленных систем. // и IEcsInit.Init у всех добавленных систем.
_pipeline.Init(); _pipeline.Init();
} }
// Update-цикл движка. // Update-цикл движка.
public void Update() public void Update()
{ {
// Запуск IEcsRunProcess.Run у всех добавленных систем. // Запуск IEcsRun.Run у всех добавленных систем.
_pipeline.Run(); _pipeline.Run();
} }
// Очистка окружения. // Очистка окружения.
public void Destroy() public void Destroy()
{ {
// Запускает IEcsDestroyInitProcess.Destroy у всех добавленных систем. // Запускает IEcsDestroyInit.Destroy у всех добавленных систем.
_pipeline.Destroy(); _pipeline.Destroy();
_pipeline = null; _pipeline = null;
// Обязательно удалять миры которые больше не будут использованы. // Обязательно удалять миры которые больше не будут использованы.
@ -747,7 +752,7 @@ The type or namespace name 'ReadOnlySpan<>' could not be found (are you missing
Напряму - никак. </br> Напряму - никак. </br>
Обычно потребность выключить/включить систему появляется когда поменялось общее состояние игры, это может так же значить что нужно переключить сразу группу систем, все это в совокупности можно рассматривать как измннеия процессов. Есть 2 решения:</br> Обычно потребность выключить/включить систему появляется когда поменялось общее состояние игры, это может так же значить что нужно переключить сразу группу систем, все это в совокупности можно рассматривать как измннеия процессов. Есть 2 решения:</br>
+ Если измненеия процесса глобальные, то создать новый `EcsPipeline` и в цикле обновления движка запускать соотвествующий пайплайн. + Если измненеия процесса глобальные, то создать новый `EcsPipeline` и в цикле обновления движка запускать соотвествующий пайплайн.
+ Разделить `IEcsRunProcess` на несколько процессов и в цикле обновления движка запускать соотвествующий процесс. Для этого создайте новый интерфейс процесса, раннер для запуска этого интерфейса и получайте раннер через `EcsPipeline.GetRunner<T>()`. + Разделить `IEcsRun` на несколько процессов и в цикле обновления движка запускать соотвествующий процесс. Для этого создайте новый интерфейс процесса, раннер для запуска этого интерфейса и получайте раннер через `EcsPipeline.GetRunner<T>()`.
</br> </br>
# Обратная связь # Обратная связь