СОХРАНИ, если не хочешь лишних лагов и кривого текста на экране
void Update() {
hpText.text = player.hp.ToString();
}🔻 Обновляется каждый кадр, даже если значение не изменилось
🔻 Нагружает процессор и UI-систему
🔻 Вредит производительности, особенно на мобилках
public Text hpText;
void Start() {
player.OnHealthChanged += UpdateHPText;
}
void UpdateHPText(int hp) {
hpText.text = hp.ToString();
}
✅ UI обновляется только когда нужно
✅ Удобно и масштабируемо
✅ Можно подключать любое количество подписчиков
✅ Если значение меняется постоянно (например, таймер или скорость)
✅ Если UI зависит от времени, позиции и других динамических данных
void Update() {
timerText.text = Mathf.FloorToInt(Time.time).ToString();
}• 🧠 UI обновляем только при изменении данных
• ⚙️ Используем события (Action, delegate)
• 🚀 Update() — только для реально динамических данных
Please open Telegram to view this post
VIEW IN TELEGRAM
Сохрани — пригодится при каждом тесте игры!
📌 Пишет сообщение в консоль.
➕ Отличный способ быстро проверить, вызывается ли код и какие значения у переменных.
🟡 Жёлтое сообщение в консоли.
➕ Удобно для вывода нефатальных ошибок, которые стоит учитывать.
🔴 Красное сообщение.
➕ Используется для критических ошибок, на которые нужно немедленно обратить внимание.
⏸ Приостанавливает выполнение игры в редакторе в момент вызова.
➕ Удобно для анализа состояния объекта в рантайме.
⚠️ Не работает в билде!
🔍 Рисует линии в Scene View во время игры.
➕ Помогает визуализировать направления, трассировку лучей и отладку физики.
⚠️ Линии видны только в Scene View, не в Game View и не в билде.
🔹 БОНУС — Debug.Assert(condition);
🛑 Проверяет условие, и если оно ложно — выводит ошибку и останавливает игру (в редакторе).
➕ Идеально для отладки инвариантов и неожиданных состояний.
💬 Поделись с другом, который не понимает, почему ничего не работает
🔔 Подпишись на канал, чтобы не пропускать мощные фишки по Unity и C#
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5
🔁 Что такое ref и out в C#?
Сохрани — пригодится в любом проекте!
✅ ref — позволяет передать переменную по ссылке и изменить её значение внутри метода.
🔸 Главное: переменная должна быть инициализирована до передачи.
✅ out — тоже передаёт по ссылке, но переменная может быть не инициализирована до вызова.
🔸 Главное: метод обязан присвоить значение переменной до выхода.
🧠 ref vs out — в чём разница?
• ref: переменная уже есть — хочешь изменить её внутри метода
• out: переменной ещё нет — хочешь создать её и вернуть результат
💡 Пример из реальной жизни:
Метод TryParse использует out, чтобы вернуть значение только если операция прошла успешно.
📌 Сохрани — пригодится в любом проекте
🔔 Подпишись на канал, чтобы не пропускать полезные посты по Unity и C#
👉 Akrus Games | Unity
Сохрани — пригодится в любом проекте!
✅ ref — позволяет передать переменную по ссылке и изменить её значение внутри метода.
🔸 Главное: переменная должна быть инициализирована до передачи.
void AddFive(ref int number)
{
number += 5;
}
int x = 10;
AddFive(ref x);
Debug.Log(x); // 👉 выведет 15
✅ out — тоже передаёт по ссылке, но переменная может быть не инициализирована до вызова.
🔸 Главное: метод обязан присвоить значение переменной до выхода.
void GetAnswer(out int result)
{
result = 42;
}
int answer;
GetAnswer(out answer);
Debug.Log(answer); // 👉 выведет 42
🧠 ref vs out — в чём разница?
• ref: переменная уже есть — хочешь изменить её внутри метода
• out: переменной ещё нет — хочешь создать её и вернуть результат
💡 Пример из реальной жизни:
if (int.TryParse("123", out int number))
{
Debug.Log(number); // 👉 123
}Метод TryParse использует out, чтобы вернуть значение только если операция прошла успешно.
📌 Сохрани — пригодится в любом проекте
🔔 Подпишись на канал, чтобы не пропускать полезные посты по Unity и C#
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3 2 2
Сохрани — пригодится на старте, перед собеседованиями и для ежедневной практики!
Подходит и для C#, и для Unity-разработчиков, которым нужно прокачать алгоритмическое мышление
🎯 Решай задачи разного уровня сложности: от новичка до ниндзя
Изучи чужие решения — как бесплатные шпаргалки
Поддерживает C#, JavaScript, Python и многие другие
💼 Алгоритмы и структуры данных, прокачка для собеседований
Часто встречаются задачи, похожие на реальные интервью в топ-компаниях
Есть поддержка C#, Java, Python и др.
🧮 Математические и логические головоломки
Развивает аналитическое мышление и чистое решение в коде
Особенно полезен, если хочешь писать «чисто и красиво» даже в Unity
👨🏫 Пошаговая практика по языкам — включая C#
Каждая задача сопровождается фидбеком от менторов
Простой интерфейс, хорош для системной прокачки
⚔️ Самая активная соревновательная платформа по алгоритмам
Регулярные турниры, рейтинги, реальные челленджи
Поддерживает C#, C++, Python — отличная тренировка логики и скорости
Please open Telegram to view this post
VIEW IN TELEGRAM
Всем привет!
Хочу порекомендовать канал моего знакомого — Timm Studio! На этом канале вы можете наблюдать за процессом создания игр, поддерживать его и следить за его контентом. На этом канале будет выходить много интересного контента, а также чтобы вы могли сразу увидеть его работы, я скину пару примеров! в общем если вам интересно , ПОДПИСЫВАЙТЕСЬ
https://t.me/ITimGameStudio <<<
Хочу порекомендовать канал моего знакомого — Timm Studio! На этом канале вы можете наблюдать за процессом создания игр, поддерживать его и следить за его контентом. На этом канале будет выходить много интересного контента, а также чтобы вы могли сразу увидеть его работы, я скину пару примеров! в общем если вам интересно , ПОДПИСЫВАЙТЕСЬ
https://t.me/ITimGameStudio <<<
1🔥6❤1😱1 1 1
Сохрани — чтобы писать как PRO 🧼
MovePlayer(), SaveData() — названия должны описывать то, что делает функция. Это сразу видно без чтения тела метода.
❌ if (health < 30)
✅ if (health < lowHealthThreshold)
➡️ Используй константы или переменные с понятными именами — это повышает читаемость и упрощает поддержку.
❌ Всё в одном Player.cs
✅ PlayerMovement.cs, PlayerShooting.cs, PlayerUI.cs
➡️ Разделяй логику по принципу SRP — каждый класс делает только своё. Это упростит тестирование и повторное использование.
Если ты пишешь одинаковый код более 2 раз — вынеси его в отдельный метод.
Чистота = переиспользуемость.
❌ // Увеличиваем счёт
✅ // Начисляем очки за попадание в голову
➡️ Комментарий должен объяснять почему, а не что и так видно из кода.
📌 Пиши так, чтобы код был понятен тебе через 3 месяца
💬 А ты комментируешь свой код? Напиши честно
🔔 Подпишись, чтобы прокачивать C# и Unity до уровня senior
Please open Telegram to view this post
VIEW IN TELEGRAM
Сохрани — пригодится даже опытным разработчикам.
Debug.Log(nameof(Player)); // "Player"
🔸 Помогает избежать опечаток и ломания при рефакторинге. Работает с классами, методами, переменными.
[ContextMenu("Reset Settings")]
private void ResetSettings() {
// Применяется без запуска игры
}🛠 Работает только в MonoBehaviour, не поддерживает static. Удобно для генерации данных, сбросов, ручного теста.
if (TryGetComponent<Rigidbody>(out var rb)) {
rb.AddForce(Vector3.up * 10);
}🚀 Безопаснее GetComponent<T>() != null. Избегает двойного поиска и чище читается. С Unity 2020.1+
[System.Flags]
public enum WeaponType {
None = 0,
Sword = 1,
Bow = 2,
Magic = 4
}
// Пример использования:
var myWeapon = WeaponType.Sword | WeaponType.Magic;
if ((myWeapon & WeaponType.Magic) != 0) {
Debug.Log("Magic enabled");
}
💡 Удобно для фильтров, состояний, прав. Избегайте HasFlag — он медленнее.
void OnValidate() {
damage = Mathf.Max(0, damage);
}🧪 Вызывается при изменении полей в инспекторе. Удобно для базовой валидации и UI-обновлений. Не перегружайте тяжёлыми операциями.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5 2 2❤1 1
int a = 10;
int b = 5;
int result = a > b ? a - b : b - a;
Debug.Log(result);
Forwarded from Akrus Games | Unity (Egor)
playerName ??= "Guest";
🔧 Если playerName — null, присваивается “Guest”.
Чище, чем обычная проверка.
💡 Работает с ссылочными и nullable типами (C# 8.0+).
void Update() {
if (!Application.isPlaying) return;
// Работает только в Play Mode
}⚙️ Избегай выполнения лишнего в редакторе.
Полезно в Update, OnValidate, Awake, Start, корутинах и редакторских скриптах.
[MenuItem("Tools/Quick Play _F5")]
private static void QuickPlay() {
EditorApplication.isPlaying = !EditorApplication.isPlaying;
}💡 Создай свои тулзы с быстрым доступом.
Поддерживает комбинации: Ctrl+Shift+R (Windows).
public readonly struct DamageInfo {
public readonly int Value;
public readonly Vector3 Direction;
}⚡ Без лишних аллокаций, идеально для ECS, Burst, инвариантных данных.
💬 В обычных MonoBehaviour-скриптах не всегда критично.
[Header("Настройки урона")]
[Range(0, 100)] public int damage;
[Tooltip("Урон по зоне — например, огонь или яд")]
public bool isArea;🧼 Повышает читаемость инспектора.
Меньше вопросов от команды → меньше багов.
💡 Добавь ещё [Space] для разделения блоков.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3❤2 1 1
string text = null;
Debug.Log(text == null ? "Null" : text.ToUpper());
😁3
Хотите получать информацию о разработке игр? Или же только лайфхаки?
Anonymous Poll
22%
ЛАЙФХАКИ🗡
24%
ИГРЫ💰
54%
и то и другое🎧
[SerializeReference]
public IWeapon weapon;
🔧 Позволяет задавать в инспекторе объекты, реализующие интерфейс или базовый класс
💡 Работает с System.Serializable классами, начиная с Unity 2020+
⚠️ Не работает с MonoBehaviour. Нужно использовать ManagedReferenceResolver для удобного выбора объектов.
🧩 Делим код на логические сборки: Core, UI, Tools, Editor
⚡ Unity пересобирает только изменённые .asmdef, а не весь проект
🔐 Изоляция editor-кода от runtime, контроль зависимостей и unit-тестов
public class WaitForHealth : CustomYieldInstruction {
public override bool keepWaiting => Player.Health < 50;
}
// Использование
yield return new WaitForHealth();🧠 Заменяет while() и вложенные корутины
✅ Удобно для загрузок, триггеров, ожидания событий без сложной логики
[CreateAssetMenu]
public class WeaponData : ScriptableObject {
public int damage;
public float range;
}
📦 Расшаривай данные между объектами, сценами и компонентами
🎯 Без GetComponent, без дубликатов — идеально для дизайнеров
💡 Упрощает тестирование и масштабирование
[InitializeOnLoadMethod]
private static void OnReload() {
Debug.Log("Editor reloaded");
}
🔁 Сохраняй/восстанавливай состояние редактора, кеши, настройки
🔥 Полезно для плагинов, тулов, Editor-only логики
⚠️ Метод должен быть static. Альтернатива — EditorApplication.playModeStateChanged
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4 4
📘 Metanit — один из самых понятных и полных гидов по C# — идеально для Unity-разработчиков.
Он простым языком объясняет даже сложные темы, постоянно обновляется (уже есть материалы по C# 12) и отлично работает как учебник, так и как справочник.
#unity #csharp #программирование #gamedev #советы
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3🔥1 1
🎯 Цель — 200 подписчиков!
Друзья, как только наш канал набирает 200 подписчиков, я выпускаю Telegram-бота, который будет вашим карманным помощником по Unity и C#!
💡 В боте вы найдёте:
— Самые полезные фишки по Unity
— Советы по C#
— Подборки курсов, книг и видео
— Шпаргалки и практика
👨💻 Всё собрано и удобно структурировано — чтобы учиться и развиваться было проще!
📲 Делитесь каналом с друзьями — и бот не заставит себя ждать.
Погнали к цели! 🚀
👉 Akrus Games | Unity
#unity #csharp #telegramбот #gamedev #программирование
Друзья, как только наш канал набирает 200 подписчиков, я выпускаю Telegram-бота, который будет вашим карманным помощником по Unity и C#!
💡 В боте вы найдёте:
— Самые полезные фишки по Unity
— Советы по C#
— Подборки курсов, книг и видео
— Шпаргалки и практика
👨💻 Всё собрано и удобно структурировано — чтобы учиться и развиваться было проще!
📲 Делитесь каналом с друзьями — и бот не заставит себя ждать.
Погнали к цели! 🚀
#unity #csharp #telegramбот #gamedev #программирование
Please open Telegram to view this post
VIEW IN TELEGRAM