0%

LeoECS - шаблоны кода в Unity

Автоматическая генерация кода - это то, чего я пытаюсь всегда избегать. Но иногда это может быть полезным, например, для автоматизации повторяющихся операций типа создания ecs-систем нужного типа или настройки стартовой инициализации.

Модуль интеграции в Unity теперь поддерживает генерацию 5 типов шаблонов:

Стартовый шаблон

Может быть полезным для быстрого создания готового к использованию MonoBehaviour-класса инициализации ECS-мира и систем с автоматической настройкой отладочной визуализации в сцене:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
using Leopotam.Ecs;
using UnityEngine;

namespace Client {
sealed class TestEcsStartup : MonoBehaviour {
EcsWorld _world;
EcsSystems _systems;

void OnEnable () {
_world = new EcsWorld ();
#if UNITY_EDITOR
Leopotam.Ecs.UnityIntegration.EcsWorldObserver.Create (_world);
#endif
_systems = new EcsSystems (_world);
_systems
// Register your systems here, for example:
// .Add (new TestSystem1())
// .Add (new TestSystem2())
.Initialize ();
#if UNITY_EDITOR
Leopotam.Ecs.UnityIntegration.EcsSystemsObserver.Create (_systems);
#endif
}

void Update () {
_systems.Run ();
}

void OnDisable () {
_systems.Dispose ();
_systems = null;
_world.Dispose ();
_world = null;
}
}
}

Шаблон IEcsInitSystem

Может быть полезным для быстрого создания готового к использованию IEcsInitSystem класса:

1
2
3
4
5
6
7
8
9
10
11
using Leopotam.Ecs;

namespace Client {
sealed class TestEcsInitSystem : IEcsInitSystem {
void IEcsInitSystem.Initialize () {
// Add your initialize code here.
}

void IEcsInitSystem.Destroy () { }
}
}

Шаблон IEcsRunSystem

Может быть полезным для быстрого создания готового к использованию IEcsRunSystem класса:

1
2
3
4
5
6
7
8
9
using Leopotam.Ecs;

namespace Client {
sealed class TestEcsRunSystem : IEcsRunSystem {
void IEcsRunSystem.Run () {
// Add your run code here.
}
}
}

Шаблон компонента общего назначения

Создает стандартный пустой компонент:

1
2
3
4
5
namespace Client {
sealed class TestEcsComponent {
// Add your data here.
}
}

Шаблон компонента без данных

Создает компонент, рассчитанный на использование в виде флага без инжекта в фильтр:

1
2
3
4
5
6
using Leopotam.Ecs;

namespace Client {
[EcsIgnoreInFilter]
sealed class TestEcsComponentFlag { }
}

Поддержка пространств имен

Все шаблоны поддерживают использование пространств имен из Editor Settings (значение поля “Root namespace”, по умолчанию будет использовано значение “Client”):

Вы можете помочь автору подпиской (с доступом к коду):
Или просто разовым донатом (без доступа к коду):