TGViewer
Akrus Games | Unity Akrus Games | Unity @akrusunity · 2.67K subscribers
Post #773 459
⚡️ Unity: 4 средние по сложности функции C#, которые надо знать каждому (для новичков)

Сохраняй шпаргалку — это не база, а именно тот уровень, который отличает новичка от уверенного мидла. Употребляешь их — код становится чище, а задачи решаются быстрее.

1️⃣ LINQ: Where, Select, FirstOrDefault

📌 Зачем: Работа с коллекциями без велосипедных for и лишних списков.

// Было:
List<Enemy> aliveEnemies = new List<Enemy>();
foreach (var enemy in allEnemies)
{
if (enemy.IsAlive) aliveEnemies.Add(enemy);
}

// Стало:
var aliveEnemies = allEnemies.Where(e => e.IsAlive).ToList();

🔸 Особенности:

· Всегда using System.Linq;
· Where — фильтрует. Select — преобразует. FirstOrDefault — находит первый или возвращает null.
· Не забывай .ToList() или .ToArray() в конце, если нужна новая коллекция, иначе получишь IEnumerable, который выполнится заново при каждом обращении.
· На больших данных или в Update() может просаживать производительность. Для критичных мест иногда лучше старый добрый цикл.

2️⃣ События (Events) с Action / Func

📌 Зачем: Чистая и безопасная реализация Observer паттерна. Развязывает связи между скриптами.

// Объявление события
public static event Action<Item> OnItemPickedUp;

// Вызов
void PickUp(Item item) {
OnItemPickedUp?.Invoke(item); // Проверка на null
}

// Подписка в другом скрипте
void OnEnable() => Player.OnItemPickedUp += HandlePickUp;
void OnDisable() => Player.OnItemPickedUp -= HandlePickUp; // ОТПИСКА ОБЯЗАТЕЛЬНА!

🔸 Особенности:

· Action — для void методов. Action<int> — для методов с параметром.
· Func<int, string> — когда нужно возвращать значение (последний тип-параметр — возвращаемый).
· Всегда отписывайся! (OnDisable, OnDestroy). Иначе будет утечка памяти и ошибки.
· ?.Invoke() — безопасный вызов, если на событие никто не подписан.

3️⃣ Coroutine + yield return новые инструкции

📌 Зачем: Сложные последовательности и тайминги.

IEnumerator AttackSequence() {
yield return new WaitForSeconds(1f); // Ждём секунду
PlayAnimation("Attack");
yield return new WaitForEndOfFrame(); // Ждём конец кадра
ApplyDamage();
yield return StartCoroutine(CooldownRoutine()); // Вкладываем одну корутину в другую
yield return null; // Ждём один кадр (устаревший вариант, лучше WaitForEndOfFrame)
}

🔸 Особенности:

· yield return new WaitForSecondsRealtime(time) — работает даже если Time.timeScale = 0 (для паузы).
· yield return new WaitUntil(() => condition) — ждём, пока условие станет true. Мощная штука!
· Корутину можно остановить StopCoroutine() или StopAllCoroutines().
· Не забывай проверять, активен ли объект (gameObject.activeInHierarchy), прежде чем начинать.

4️⃣ StringBuilder для динамических строк

📌 Зачем: Когда собираешь длинный лог, JSON, текст UI или много строк в цикле.

// ПЛОХО (создаётся куча мусора):
string result = "";
for (int i = 0; i < 100; i++) {
result += i.ToString(); // КАТАСТРОФА ПРОИЗВОДИТЕЛЬНОСТИ
}

// ХОРОШО:
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 100; i++) {
sb.Append(i);
}
string finalResult = sb.ToString();

🔸 Особенности:

· using System.Text;
· В Update() или часто вызываемых методах обязательно использовать.
· Можно AppendLine(), AppendFormat(), Clear().
· Инициализируй с запасной ёмкостью, если знаешь длину: new StringBuilder(500).

✅ Знать эти функции — мало. Надо понимать когда и зачем их применять. Это и есть скилл.

💬 Какую из этих функций используешь чаще всего? Есть ли свои фишки?
🔔Подпишись — скоро разберём ещё одну пачку: от делегатов до асинхронных операций в Unity.

👉Akrus Games | Unity
  • 🔥 7
  • ❤ 2
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 →