Unity предлагает два способа: напрямую через клавиши или через действия из
Input
Manager
. Оба метода позволяют легко реагировать на действия пользователя.Ключевые моменты:
• Input.GetKey() и его аналоги читают физические клавиши — подойдут для прототипов
• Input.GetButton() использует имена действий — удобно для масштабируемых настроек
• Методы вызываются в Update() и работают каждый кадр
Низкоуровневый и абстрактный подход — выбирай в зависимости от целей и размера проекта.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥26👍14❤10🤝10
Фильтруем списки эффективно с ToHashSet!
Сейчас научимся быстро отбирать элементы одного списка, проверяя, есть ли они в другом. Это избавит от лишних проходов и ускорит работу кода.
Подключим нужные библиотеки — всё уже есть в стандартной библиотеке:
Допустим, мы хотим оставить только избранные фрукты. Без оптимизации код выглядит так:
Если списки большие,
Теперь преобразуем второй список в
🔥 Без
➡️ C# Ready | #практика
Сейчас научимся быстро отбирать элементы одного списка, проверяя, есть ли они в другом. Это избавит от лишних проходов и ускорит работу кода.
Подключим нужные библиотеки — всё уже есть в стандартной библиотеке:
using System;
using System.Collections.Generic;
using System.Linq;
Допустим, мы хотим оставить только избранные фрукты. Без оптимизации код выглядит так:
List<string> fruits = new() { "apple", "banana", "mango", "orange" };
string[] favorite = { "banana", "kiwi", "orange" };
var selected = fruits.Where(f => favorite.Contains(f)).ToList();
Если списки большие,
Contains()
будет работать медленно — каждый раз проходит по массиву.Теперь преобразуем второй список в
HashSet
— поиск в нём быстрее:List<string> fruits = new() { "apple", "banana", "mango", "orange" };
string[] favorite = { "banana", "kiwi", "orange" };
HashSet<string> favSet = favorite.ToHashSet();
var selected = fruits.Where(f => favSet.Contains(f)).ToList();
🔥 Без
ToHashSet()
код искал «банан» в массиве снова и снова. С HashSet
— это почти мгновенная проверка.Please open Telegram to view this post
VIEW IN TELEGRAM
❤15🔥9👍8
👍14🔥8❤5
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥21🤝8❤6👍5
В этой статье:
• Базовая подготовка: dotnet new + VS Code, установка шаблонов Avalonia
• Разметка интерфейса на Grid и биндинги MVVM через ReactiveUI
• Стилизация: от локальных сеттеров до готовой Material-темы
🟡 Рекомендую прочитать на Habr!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10👍6🔥5
Извлекаем только нужные поля с анонимными типами в LINQ!
Сейчас научимся фильтровать и проецировать данные без лишнего шума в коде — всё с помощью анонимных типов. Это отличный способ быстро получить нужные поля из объектов, не создавая для этого отдельные классы. Удобно, лаконично и читаемо!
Для начала подключим стандартные библиотеки, с которыми работает LINQ и коллекции.
Допустим, у нас есть список пользователей. Каждый — это объект с несколькими свойствами:
Часто мы хотим взять только часть данных — например,
Вместо того чтобы вручную создавать новый класс или собирать словарь, мы можем сделать это прямо в LINQ-запросе — с помощью анонимного типа:
Теперь в
🔥 Без анонимных типов пришлось бы писать отдельный класс, копировать туда данные, и городить лишнюю структуру.
А с
➡️ C# Ready | #практика
Сейчас научимся фильтровать и проецировать данные без лишнего шума в коде — всё с помощью анонимных типов. Это отличный способ быстро получить нужные поля из объектов, не создавая для этого отдельные классы. Удобно, лаконично и читаемо!
Для начала подключим стандартные библиотеки, с которыми работает LINQ и коллекции.
using System;
using System.Linq;
using System.Collections.Generic;
Допустим, у нас есть список пользователей. Каждый — это объект с несколькими свойствами:
class User {
public int Id;
public string Name;
public int Age;
}
List<User> users = GetUsers();
Часто мы хотим взять только часть данных — например,
Id
и Name
.Вместо того чтобы вручную создавать новый класс или собирать словарь, мы можем сделать это прямо в LINQ-запросе — с помощью анонимного типа:
var result = users
.Where(u => u.Age > 18)
.Select(u => new { u.Name, u.Id });
Теперь в
result
лежит коллекция объектов с двумя свойствами — Name
и Id
. Обращаться к ним можно сразу:foreach (var u in result)
Console.WriteLine($"{u.Id}: {u.Name}");
🔥 Без анонимных типов пришлось бы писать отдельный класс, копировать туда данные, и городить лишнюю структуру.
А с
new { u.Name, u.Id }
— всё делается за одну строку, без лишнего мусора.Please open Telegram to view this post
VIEW IN TELEGRAM
🔥19❤6👍5🤝1
This media is not supported in your browser
VIEW IN TELEGRAM
Здесь собраны пошаговые гайды по C#, ASP․NET Core, Entity Framework и другим технологиям, разбор алгоритмов, подборки вопросов для собеседований и советы по оптимизации кода.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍6🔥4👎1
В этой задаче создаём кэш фиксированного объёма, который автоматически удаляет наименее используемые элементы, сохраняя актуальные данные доступными за константное время.
В этой задаче:
• Используем Dictionary для мгновенного доступа к элементам по ключу.
• Поддерживаем порядок использования через двусвязный список.
• При превышении ёмкости вытесняем «самый старый» элемент.
Такой кэш незаменим в браузерах, базах данных и системах, где важна скорость повторного доступа к данным.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥22❤4👍4