Akrus Games | Unity
2.95K subscribers
408 photos
89 videos
11 files
351 links
Самые годные лайфхаки по unity c#

Сотрудничество/реклама/помощь @Akrus001
Download Telegram
⚡️ Unity: C# Data-Oriented Design для максимальной производительности

Устал от медленного foreach по тысячам объектов? Struct of Arrays — это подход, который ускоряет обработку данных, как в настоящем ECS.

Проблема стандартного подхода:
foreach (var enemy in enemies) {
enemy.Update(); // Кэш-промахи, разбросанные объекты в памяти
}

• Кэш-промахи процессора
• Разбросанные в памяти объекты
• Виртуальные вызовы

Решение: Struct of Arrays (основа ECS)

1️⃣ Правильная структура данных:
public struct EnemyChunk {
public Vector3[] positions;
public float[] healths;
public int count;
}

Данные хранятся в плотных массивах — процессор обрабатывает их последовательно, без промахов кэша.

2️⃣ Оптимизированная итерация:
for (int i = 0; i < chunk.count; i++) {
chunk.positions[i] += Vector3.forward * speed;
chunk.healths[i] -= Time.deltaTime;
}

• Нет виртуальных вызовов
• Данные последовательны в кэше
• Автоматическая векторизация
• Параллелизация

💡 Реальный результат:
Обработка 10 000 юнитов ускоряется в 2-5 раз по сравнению с GameObject/GetComponent в цикле. Даже против готового списка MonoBehaviour выигрыш за счет кэш-дружественности.

🚀 Следующий уровень:
Unity.Entities (DOTS) — автоматическое управление чанками, параллельная обработка и Burst компиляция.

💬 Используешь плотные массивы для данных? Делитесь опытом в комментариях!
🔔 Подпишись — больше фишек для инди-оптимизации впереди.

👉Akrus Games | Unity

#Unity3D #UnityOptimization #ECS #DOTS #CSharp
71