📌 Сохрани — это шаг в сторону масштабируемого и профессионального кода
1️⃣ Action и Func — универсальные делегаты
public Action OnFinished;
public Func<bool> IsConditionMet;
📌 Упрощают объявления и колбэки. Подходят для:
• UI-событий
• игровых триггеров
• асинхронных проверок
Вместо создания собственного делегата — просто:
OnFinished?.Invoke();
2️⃣ LINQ + лямбды — фильтрация без циклов
var enemies = allUnits.Where(u => u.IsEnemy && u.HP > 0).ToList();
📌 Сокращает код и улучшает читаемость.
Идеально для выбора целей, фильтрации объектов и логики на старте.
⚠️ Внутри Update() не злоупотребляй — может создать GC.
3️⃣ Extension Methods — пиши C#, будто это твой движок
public static Vector3 WithY(this Vector3 v, float y) => new(v.x, y, v.z);
📌 transform.position = pos.WithY(0); — читается, как родной синтаксис.
Абстрагируй повторы, работай с Transform, GameObject, string, float и т.д.
4️⃣ ScriptableObject — переменные и сигналы между сценами
[CreateAssetMenu]
public class FloatVariable : ScriptableObject {
public float Value;
}
📌 Используется как:
• runtime переменная (настройки, состояния)
• Event-центр (через UnityEvent или кастомные Raise())
• конфигурация апгрейдов / миссий
Поддерживает инспекторную настройку и разделение логики от данных.
5️⃣ Editor-инструменты — экономь себе часы
[MenuItem("Tools/Clear PlayerPrefs")]
private static void ClearPrefs() => PlayerPrefs.DeleteAll();📌 Один клик — и готово.
Создавай себе:
• дебаг-кнопки
• редакторы данных
• инструменты генерации
Хочешь больше — используй EditorWindow, PropertyDrawer, AssetPostprocessor.
💬 Хочешь идти в senior — думай об удобстве других, переиспользуемости и времени команды.
🔔 Подписывайся — впереди про архитектуру, DI, UI-системы и async паттерны
👉Akrus Games | Unity