Сохрани — используешь каждый день, если хочешь писать чисто и современно.
playerName = inputName ?? "Без имени";
list ??= new List<int>();
📌 ?? — дефолт при null, ??= — инициализация, если объект ещё не создан.
В Unity:
• Подходит для ленивой инициализации компонентов
• Отлично работает с GetComponent() и кастомными системами DI
string label = state switch {
GameState.Menu => "В меню",
GameState.Playing => "Играем",
_ => "?"
};📌 Читается лучше, чем громоздкий switch { case }, особенно в UI-слоях и инспекторных тулзах.
В Unity:
• Используй в кастомных инспекторах, отображении состояний, локализации
Debug.Log($"Игрок: {playerName}, Очки: {score}");📌 Быстрее и безопаснее, чем +. Упрощает логи на этапе разработки.
В Unity:
• Используй для логирования, UI-отладчика, вывода инфы в EditorWindow
using var stream = File.OpenRead(path);
📌 Безопасное использование ресурсов — автоматически закроется, даже при исключении.
В Unity:
• Полезно при работе с файлами, AssetBundle, StreamingAssets
• Работает только в .NET 4.x / Unity с C# 8+
readonly struct DamageInfo {
public readonly int amount;
public readonly Vector3 direction;
}
void ApplyDamage(in DamageInfo info) { ... }📌 Меньше копий, больше производительности. Актуально в ECS и при передаче больших структур.
💬 Какие из этих ты уже используешь в Unity?
🔔 Подписывайся — будет ещё про Span<T>, LINQ и новые C# фичи в Unity
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7 3 2 1
IEnumerable<int> Numbers()
{
Console.WriteLine("Start");
yield return 1;
Console.WriteLine("Middle");
yield return 2;
Console.WriteLine("End");
}
foreach (var num in Numbers().Take(1))
{
Console.WriteLine(num);
}
Forwarded from DevKit Unity
🎉 Розыгрыш сразу 3 исходников🎉
Так как розыгрыш исходника «Симулятор магазина» немного задерживается, мы совместно с каналом Unity Free Projects решили порадовать вас и разыграть сразу три других крутых проекта! 🔥
📅 Итоги через 3 дня в 15:00 по МСК
🏆 3 призовых места
Условия участия:
1️⃣ Подписаться на каналы:
👉 @DevkitUnity
👉 @Unity_free_projects
🚀 Участвуй и получи один из трёх топовых Unity-проектов!
🍀 Всем удачи!
Так как розыгрыш исходника «Симулятор магазина» немного задерживается, мы совместно с каналом Unity Free Projects решили порадовать вас и разыграть сразу три других крутых проекта! 🔥
📅 Итоги через 3 дня в 15:00 по МСК
🏆 3 призовых места
Условия участия:
1️⃣ Подписаться на каналы:
👉 @DevkitUnity
👉 @Unity_free_projects
🚀 Участвуй и получи один из трёх топовых Unity-проектов!
🍀 Всем удачи!
var numbers = new List<int> { 1, 2, 3 };
var query = numbers.Where(n => n > 1);
numbers.Add(4);
foreach (var n in query)
Console.Write(n + " ");readonly struct Point
{
public int X { get; }
public Point(int x) => X = x;
public void Mutate()
{
Console.WriteLine(X + 1);
}
}
var p = new Point(5);
p.Mutate();
Что произойдёт при компиляции?
Anonymous Quiz
41%
Выведет 6
25%
Ошибка: нельзя вызывать метод у readonly struct
25%
Создаст копию p, выведет 6
9%
Ошибка: нельзя вызывать Console.WriteLine внутри readonly struct
Как бы вы оценили свой уровень в C#?
Anonymous Poll
38%
Новичок (только учусь)
44%
Средний (пишу код, но есть пробелы)
11%
Продвинутый (уверенно работаю с ООП, LINQ)
8%
Эксперт (оптимизация, рефлексия, продвинутые фичи)
🔥7😁2 2
🔥1
Какой хотите следующий пост?
Final Results
29%
Ошибки новичков
62%
Советы по C# или Unity
10%
Опрос: Что выведет код?
❤4🔥3 2
Akrus Games | Unity
Какой хотите следующий пост?
Набираем 50 голосов и выкладываем пост.
P.S: накидайте сюда 20 🔥
P.S: накидайте сюда 20 🔥
🔥18 7😁3
Сохрани — пригодятся в любом проекте, от прототипа до релиза.
void Awake() {
cache = GetComponent<Renderer>(); // Ранняя инициализация
}
void Start() {
uiManager.Show(); // Уже можно обращаться к другим объектам
}Используй для создания зависимостей и кэширования компонентов.
Start() — для логики, зависящей от других объектов (например, UI, враги, игрок).
#if UNITY_EDITOR
Debug.Log("Это увидит только разработчик");
#endif
Подходит для:
• Gizmos
• тестов без UNITY_INCLUDE_TESTS
• кастомных тулов
[ExecuteInEditMode]
public class ScenePreview : MonoBehaviour {
void Update() => Debug.Log("Работает в редакторе");
}
Удобно для:
• генерации окружения
• превью анимаций
• редакторов навигации
[SerializeReference]
public List<IUpgrade> upgrades;
Подходит для:
• эффектов
• AI-поведений
• квестовых условий
Debug.DrawRay(transform.position, transform.forward * 5, Color.red);
• патрули
• трассировки
• направление силы / движения
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5🔥4 1
object _sync = new string("lock");
lock (_sync)
{
Console.WriteLine("Locked");
}Это корректный код?
Anonymous Quiz
44%
Да, всё работает
28%
Нет, string — опасна как объект блокировки
18%
Ошибка компиляции
10%
Только если строка не константа
❤4🔥1 1
Заходите в наш чат! Там весело и можно поболтать😎
Иногда информация там появляется раньше чем в канале
https://t.me/chatAkrus001
https://t.me/chatAkrus001
Telegram
Unity чат
Правила: https://t.me/chatAkrus001/208