Please open Telegram to view this post
VIEW IN TELEGRAM
❤5🦄1
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍2🦄1
Для эффективной работы PID контроллера нужны правильные значения:
PID контроллер является универсальным инструментом в области автоматизации и управления. Правильная настройка его параметров позволяет достигать высокой стабильности и точности в разнообразных приложениях. Несмотря на свои недостатки, он остаётся одним из самых популярных методов контроля, благодаря своей простоте и эффективности. Если хотите поскорее увидеть практику -
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5🦄1
Начнем с определения основных полей, которые будут использоваться в нашем регуляторе:
_targetPoint — целевая точка, на которую мы стремимся, то есть желаемое значение
Все вычисления в нашем регуляторе можно разделить на три ключевые части:
Следующим шагом будет реализация публичных методов для удобства работы с контроллером. Мы создадим следующие методы:
Сегодня мы детально рассмотрели структуру и логику работы PID-регулятора. Важно помнить, что корректная настройка коэффициентов является залогом успешной работы вашего регулятора. Завтра мы продолжим изучение этой темы и поговорим о том, как применить нашу систему в игровом движке Unity. Подготовим примеры и разберем, как реализовать наши идеи на практике. А если хотите оставаться в вечном It-тонусе -
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5🦄1
This media is not supported in your browser
VIEW IN TELEGRAM
На видео, вы увидите динамику работы системы: нижний куб перемещается вдоль оси X, в то время как верхний куб пытается адаптироваться к его движениям. Если коэффициенты будут правильно настроены, нижний куб будет мгновенно и безупречно подстраиваться под верхний, создавая плавное и естественное взаимодействие объектов
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4🦄1
WebUtility позволяет автоматически заглушать звук в момент, когда игрок сворачивает окно игры. Это особенно важно для успешной модерации на платформе Яндекс. Игроки ценят правильное поведение игры, когда они переключаются между окнами. Для реализации данной функции необходимо подписаться на событие. .InBackgroundChangeEvent. Оно возвращает логическое значение: если true — игра свернута, если false — игрок остаётся на странице
С помощью свойства Device.IsMobile разработчики могут легко определить, на каком устройстве играет пользователь. Эта информация позволяет адаптировать пользовательский интерфейс и функциональность игры под конкретные характеристики устройства, обеспечивая лучшую производительность и удобство для пользователей
Ещё одна полезная функция утилиты — это возможность проверки, включён ли у игрока AdBlock. Это осуществляется через свойство AdBlock.Enabled. Зная, используется ли блокировка рекламы, разработчики могут принимать более обоснованные решения относительно монетизации своих игр.
Несмотря на то, что у WebUtility всего три ключевые функции, каждая из них чрезвычайно полезна и существенно упростит жизнь разработчикам при выполнении требований Яндекс-модерации. Используя эту утилиту, вы сможете сосредоточиться на создании качественного игрового контента, не беспокоясь о нюансах, которые она эффективно решает. Хотите больше крутых плагинов -
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5🦄1
Самый просто ответ. При статической типизации тип переменных определяется на этапе компиляции, а в динамической в процессе выполнения. Так же можно отметить, что при статической типизации код становится чуть понятнее за счет явных типов, но при динамической можно упростить код, ведь одной переменной может хватить для одного класса
Начнем с места хранения. Значимые типы храниться в стеке. Ссылочные типы хранятся в куче, а ссылки на них в стеке. При попытке скопировать значимый тип - мы копируем значение. При попытке скопировать ссылочный тип - мы копируем только ссылку
Ref - ключевое слово, которое позволяет передавать не значение, а ссылку на переменную где хранится это значение. Меняя значения внутри метода мы меняем значение переменной которую передовали
Out - ключевое слово, которое обязует проинициализировать параметр метода внутри. Бывает полезно когда нужно вернуть несколько типов из одного метода
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤18🦄1
Private - объект виден только в текущем классе
Private protected - то же что и protected, но только внутри одной dll сборки
Protected - объекты видны в пределах текущего класса и его наследников
Internal - доступ к этим объектам имеют только объекты и текущей сборки. По сути тот же public, но доступ для объектов внутри своей dll
Protected internal - то же что и internal, но в добавок виден наследникам из других dll сборок
Public - у этого модификатора нет ограничений по доступу
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍4🦄1
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍2🦄1
Суть замыкания заключается в том, что происходит изменение переменной внешней функции через вызовы внутренней функции. Мы бы смогли добиться того же самого эффекта, если бы сделали X полем класса. Тогда бы при вызове метода он также увеличивал X на один при каждом вызове. Таким образом замыкание избавляет нас от создания лишнего поля
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6🦄1
Стоит понимать, что создавая делегат мы создаем новый тип функции. При создании экземпляра - мы добавляем в него любые методы которые подходят по сигнатуре. Сколько методов добавим - столько и активируется при вызове делегата. А если остались вопросы -
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3🔥2🦄1
Array: Массив в C# имеет фиксированный размер, который нужно задавать при его создании. После создания массива его размер изменить нельзя. Если необходимо увеличить или уменьшить количество элементов, придется создавать новый массив и копировать в него данные
List: Список (List<t>) является динамической коллекцией. Его размер может изменяться в процессе выполнения программы, что делает его более гибким в работе. Добавление и удаление элементов осуществляется проще и быстрее
Array: У массивов есть ограниченное количество встроенных методов и свойств. Например, они имеют свойство Length, которое показывает количество элементов в массиве
List: Списки имеют обширный набор методов для работы с данными, такие как Add(), Remove(), Sort(), Contains() и другие, что делает работу с коллекциями гораздо более удобной. Кроме того, у списка есть свойство Count, которое возвращает количество элементов в списке
Array: Массив может хранить элементы одного типа. Тип массива определяется при его создании и, следовательно, все элементы должны соответствовать этому типу
List: Список также типизирован, но при этом он более абстрактен. Вы можете использовать генерацию типов (generics), и это позволяет создавать списки любого типа без необходимости указывать конкретный тип при работе с данными
Array: Массивы могут быть более производительными при доступе к элементам, так как они расположены в памяти последовательно. Это позволяет значительно ускорить операции чтения и записи
List: Хотя списки могут быть немного медленнее из-за своей динамической природы и управления памятью, они предлагают лучшую гибкость, особенно при частых изменениях в количестве элементов
Выбор между массивом и списком в C# зависит от конкретных потребностей вашего приложения. Если вам нужен фиксированный набор данных и требуется высокая производительность, массив может быть лучшим выбором. Если же вы ожидаете частые изменения в размерах коллекции или необходимость в более простых операциях, таких как добавление и удаление элементов, то список будет более подходящим вариантом. А если остались вопросы -
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍2🦄1