TGViewer
Akrus Games | Unity Akrus Games | Unity @akrusunity · 2.67K subscribers
Post #586 258
✅ Unity ECS на практике: Пишем первую систему

Следующий шаг
Разберем, как преобразовать обычные GameObject в Entity и работать с ними.

1. Гибридный подход (MonoBehaviour -> Entity)
- Добавь на GameObject компонент ConvertToEntity
- Он автоматически преобразует объект и его дочерние элементы при старте

2. Authoring (Создание данных в редакторе)
Пишем MonoBehaviour-обертку для визуальной настройки.
public class RotationSpeedAuthoring : MonoBehaviour
{
public float DegreesPerSecond = 360f;
}

// "Повар" преобразует Authoring в ComponentData
public class RotationSpeedAuthoringBaker : Baker<RotationSpeedAuthoring>
{
public override void Bake(RotationSpeedAuthoring authoring)
{
var entity = GetEntity(TransformUsageFlags.Dynamic);
AddComponent(entity, new RotationSpeed
{
RadiansPerSecond = math.radians(authoring.DegreesPerSecond)
});
}
}

3. Система с зависимостями
Системы могут требовать наличие других компонентов.
// Система, которая работает только с объектами, у которых есть RotationSpeed и Rotation
[UpdateInGroup(typeof(SimulationSystemGroup))]
public partial struct MyRotationSystem : ISystem
{
public void OnUpdate(ref SystemState state)
{
foreach (var (transform, speed) in
SystemAPI.Query<RefRW<LocalTransform>, RefRO<RotationSpeed>>())
{
transform.ValueRW = transform.ValueRO.RotateY(
speed.ValueRO.RadiansPerSecond * SystemAPI.Time.DeltaTime
);
}
}
}

4. Важные нюансы:
- RefRO - Read Only доступ (только чтение)
- RefRW - Read Write доступ (чтение и запись)
- Используй SystemAPI.Query для итерации по сущностям с нужными компонентами
- Все изменения автоматически параллелятся Burst компил💡 Совет: Начинай с малого — перенеси в ECS самые тяжелые части (частицы, ИИ). Не нужно переписывать всё сразу.

#Unity #ECS #DOTS #Performance #Burst
  • 🔥 5
More from @akrusunity
  1. Sep 29, 2026Чей синьор?
  2. Sep 22, 2026Я добавил релиз(я в начале не догадался, что через консоль можно прикреплять файлы любого…
  3. Sep 21, 2026https://github.com/Akrus001/YoutubeDownloader Я выложил на гитхаб переделанную версию Yout…
  4. Sep 16, 2026Я хотел запустить Youtube Downloader, но... Нейронка это уже исправила и сейчас пытается с…
  5. Sep 13, 2026Сегодня 2**8 день года и это значит что... Сегодня день программиста!!!😎⌨️🧑‍💻 (вайбкоде…
  6. Sep 8, 2026Post #1035
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →