Фишки в C# и Unity, о которых ты не слышал!

Поділитися
Вставка
  • Опубліковано 9 лип 2024
  • Всех с первым днём лета :)
    Салют, ты на канале Night Train Code 😎
    Давно не было видео и пора исправлять ситуацию. Ловите сразу крупный ролик про полезные фишки и трюки в C# и Unity, о которых вы, возможно, не знали
    Продвинутый C#. В этом видео много интересного про инкапсуляцию, nullable safety и многое другое
    • 🖤 GitHub: github.com/MeeXaSiK
    • 🖤 VK: nighttraincode
    • 🖤 Telegram: t.me/nighttraincode
    • 🖤 Instagram: / the.meps_
    • EventValue:
    github.com/NickKhalow/EventValue
    • Singleton:
    github.com/MeeXaSiK/NightSing...
    • MonoCache 2.0:
    github.com/MeeXaSiK/MonoCache
    • Таймлайн:
    00:00 ► Вступление
    00:52 ► TOP MOMENT
    01:53 ► Грамотное использование Instantiate
    02:26 ► using static
    03:00 ► using Object = System.Object;
    03:34 ► ExpressionBody и Лямбда выражения
    04:59 ► Выражение nameof
    05:28 ► IfNotNull(Action)
    06:31 ► return x = y;
    06:39 ► Оператор объединения с null (??=)
    07:28 ► Оператор объединения с null (??)
    08:11 ► Тернарная операция
    09:02 ► Оператор безопасной навигации (?)
    09:24 ► Интерполированные строки
    09:41 ► Ключ event
    10:14 ► CanBeNull
    11:06 ► Статический конструктор
    12:01 ► is и as
    13:02 ► Передача класса в аргументы
    13:40 ► Сериализация свойств в инспекторе Unity
    14:11 ► Модификатор sealed
    14:30 ► Инверсия списка ~
    14:56 ► return, continue, break
    15:37 ► Минус перед числовой переменной
    15:52 ► return x switch { };
    16:15 ► Аргументы метода
    16:32 ► IEnumerable (IReadOnlyList)
    16:56 ► Пробел при поиске
    17:09 ► Lock инспектора
    17:25 ► Alt + клик по иерархии
    17:32 ► Лайфхак с добавлением в коллекцию
    17:40 ► С первым днём лета :)
    • Спасибо за поддержку:
    Макс - попросил не указывать ссылку на сайт. Просто знайте, что есть один крутой Senior C# программист :) github.com/Sligerr
    Никита - alexko.ltd/
    • Поддержка канала:
    www.donationalerts.com/r/nigh...

КОМЕНТАРІ • 152

  • @abobaabobus7010
    @abobaabobus7010 2 роки тому +9

    Для коллекций только для чтения, которые являются листом, лучше использовать IReadOnlyList, в который так же входит IEnumerable, это даст возможность обращаться через индекс, а не только через foreach в случае IEnumerable

    • @NightTrainCode
      @NightTrainCode  2 роки тому

      Верно подмечено, благодарю)

    • @vladimirkuznetsov3601
      @vladimirkuznetsov3601 2 роки тому

      Тем более, что доступ через foreach вызывает боксинг на IEnumerable

  • @aver005
    @aver005 Рік тому +1

    Я в шоке, не думал, что такую годноту кто-то будет выгружать на ютуб.
    Спасибо, бро, за такие классные видосы!

  • @sTaRiiKan
    @sTaRiiKan Рік тому +1

    Как же круто что нашел этот канал) спасибо.

  • @q-kyoto
    @q-kyoto 2 роки тому +3

    Ты вернулся!) Шикарные видео, да и слушать тебя очень приятно) Жду с нетерпением новых видео)

  • @psy_gamer
    @psy_gamer 2 роки тому +2

    С возвращением!)
    Смотрел все ролики и могу сказать, что все они хороши!
    Буду дальше ждать новых видео от тебя!

    • @NightTrainCode
      @NightTrainCode  2 роки тому +1

      Привет, спасибо за тёплые слова. Ради этого и делаю упор на качество)
      По плану целых 10 видосов уже есть. Вопрос только в том, как бы время на всё это найти

  • @tr0sty
    @tr0sty 2 роки тому +3

    Сахар ? и ?? с проверкой на null нужно юзать очень осторожно, потому что они внутри используют неперегруженный оператор ==, поэтому с монобехами, например, их юзать категорически нельзя. Вроде в новых версиях C# это собираются поправить.

    • @sh42913
      @sh42913 2 роки тому

      Тоже хотел написать об этом

  • @andrey30966
    @andrey30966 2 роки тому +7

    16:50 есть ещё такое) ireadonlylist ireadonlydictionary ireadonlycollection
    Погуглите там не сложно)
    17:20 вместо замочка можно ПКМ по названию компонента, и там Properties. Работает как отдельное залоченое окно для данного компонента. Как в инспекторе, так и в Project табе.
    Пользуйтесь! 😉

  • @user-iz2jz6fm6i
    @user-iz2jz6fm6i 2 роки тому +1

    поставил лайк и, конечно же, оставил комментарий, потому что вай-вай-вай. спасибо за контент)

  • @user-su7yd6og7y
    @user-su7yd6og7y 2 роки тому +1

    Долгожданное возвращение))

  • @PelipUnityDev
    @PelipUnityDev 2 роки тому +1

    Как всегда очень круто. С возвращением)))

  • @Hafune
    @Hafune 2 роки тому +2

    Хороший канал, очень удобная подача материала.
    Прошлое видео которое я смотрел про Leoecs. Несмотря на то что сам leoecs уже изменился, объяснено всё очень доходчиво и видео не теряет актуальности (даже можно для других ecs применять). Как только возникали вопросы тут же получал на них ответ (например про связь сущности со объектами на сцене и в обратную сторону).
    Успехов !)

    • @NightTrainCode
      @NightTrainCode  2 роки тому

      Спасибо большое, всегда рад помочь)

  • @RomanUnreal
    @RomanUnreal 2 роки тому +1

    Музыка из начала видео: "скачать бесплатно металл без авторских прав")))

  • @Quadq
    @Quadq Рік тому +3

    Реально узнал много нового. По некоторым темам искал долго инфу в интернете так и не нашёл, но потом нашёл это видео. Это видео не из тех самых стандартных обучалок где расскажут про разве что атрибуты.

  • @serjag13
    @serjag13 2 роки тому +1

    Отличная информация и подача, желаю успехов с каналом!
    Контент вышка!

  • @EpikTMK
    @EpikTMK Рік тому

    Сижу, нифига не понимаю,но так внимательно наблюдаю и слушаю..

  • @KIRya055-Miass
    @KIRya055-Miass 10 місяців тому +1

    Благодарю тебя, за твои видео, всегда нахожу то, что я не знал, ты ещё один из тех, кто дарует мне знания, короче, спасибо, благодарю, продолжай так же, хорошо получается 👍

  • @montyforester9112
    @montyforester9112 2 роки тому +12

    Спасибо! Узрел несколько внезапных фишек, типа "field:" и "Alt+Click на папку в проекте". А вот объяснять про return/continue/break - это, кмк, уже за гранью добра и зла :))

    • @NightTrainCode
      @NightTrainCode  2 роки тому +2

      Ахах, на здоровье)
      За гранью то за гранью, но, оказывается, не для всех очевидно

  • @StratoCatster
    @StratoCatster 2 роки тому +1

    "Пжлста помедленнее!! Я записыую!" (с)
    Спасибо за видео, а теперь, пожалуйста, почините меня обратно))

  • @Agranam
    @Agranam Рік тому +1

    Отличный ролик! Спасибо)

  • @KENISEG
    @KENISEG 2 роки тому +1

    жесть,
    видео ОЧЕНЬ богато на полезные вещи!
    аж голова лопается с первого раза

  • @tarassamarin1776
    @tarassamarin1776 2 роки тому +1

    Мне понравилось, продолжай в том же духе.

  • @Veyron104
    @Veyron104 Рік тому

    11:05 спасибо!) Была такая штука) пришлось все ID итемов сдвинуть направо)

  • @HUNTER-lp5hy
    @HUNTER-lp5hy 2 роки тому +9

    Не понял когда ты рассказывал про сериализацию свойств, достаточно было сделать сет приватным, чтобы его нельзя было менять. Еще кстати прикольно если бы ты добавил, что при поиске есть возможность отфильтровать по типу. Например нужно найти сцену с названием level1. ты можешь так написать t:scene level1. В окне иерархии тоже это работает например мне нужно найти все объекты на которых висит скрипт Enemy. Можно вот так сделать t:Enemy

    • @NightTrainCode
      @NightTrainCode  2 роки тому +1

      С поиском годный лайфхак ты вспомнил)
      Про сериализацию: да, можно просто private сделать, но если в свойство добавить какие-то действия в get или set, то оно тоже перестанет отображаться в инспекторе. Поэтому и показал второй способ на такой случай

  • @limestoneMinecraft
    @limestoneMinecraft Рік тому +5

    Развивайся дружище, желаю тебе поскорее получить монетизацию и выпустить много качественного контента. Также успехов с игрой тебе.

  • @ilyaplekhanov2373
    @ilyaplekhanov2373 Рік тому +1

    С первой секунды начало резать слух произношением. В скобках указал как правильно читается
    геймАбджект (но читаешь потом Обджект пул)
    инстанТиэйт (инстанШиейт)
    гет кАмпанент ([kəmˈpəʊnənt])
    юнити Инжин (Энжайн)

  • @mad1015
    @mad1015 Рік тому +1

    Канал не брасай, очень качественный контент

  • @yzero3648
    @yzero3648 Рік тому +1

    Оч много полезного, крутяк

  • @maxBornysov
    @maxBornysov 2 роки тому +1

    Очень круто, спасибо!

  • @user-su7yd6og7y
    @user-su7yd6og7y 2 роки тому +1

    Прекрасные советы. Многими фишками сам пользуюсь.

  • @AlexK-pe6po
    @AlexK-pe6po Рік тому +1

    Большинство фишек я и так знал, но было и что-то новенькое

  • @VADIM-SOLOV
    @VADIM-SOLOV 2 роки тому +1

    классные фишки) очень полезный видос получился) спасибо!

  • @BeluCatBMG
    @BeluCatBMG Рік тому +2

    Половина видео сводится к фразе: Используйте Rider вместо богомерзкого Visual Studio

    • @NightTrainCode
      @NightTrainCode  Рік тому +1

      Пхахах. После Rider'а как-то зашёл в Visual Studio спустя год. В общем... как зашёл, так и вышел...

  • @grandmax6223
    @grandmax6223 Рік тому +3

    Ключ брик, да, если бы я так сказал на собесе, то меня бы точно ушатали бриком

  • @user-yn6np8xi7k
    @user-yn6np8xi7k Рік тому +1

    Огромное спасибо за годные советы!

  • @user-wv4cz4ls4l
    @user-wv4cz4ls4l 2 роки тому +1

    ОГО, НОВЫЙ ВИДОС. ТЫ ЖИВОЙ!

    • @NightTrainCode
      @NightTrainCode  2 роки тому

      Конечно, ахах, привет)

    • @user-wv4cz4ls4l
      @user-wv4cz4ls4l 2 роки тому +1

      @@NightTrainCode не хочешь сделать видос по DOTween ?

    • @NightTrainCode
      @NightTrainCode  2 роки тому

      @@user-wv4cz4ls4l Есть в списке)

  • @mistertwink
    @mistertwink 8 місяців тому +1

    Это все так интересно, но все еще так непонятно. Надеюсь, наступит момент, когда я буду смотреть подобные видео без сильного напряжения извилин! Спасибо за видео.

    • @NightTrainCode
      @NightTrainCode  8 місяців тому +1

      Если будешь заниматься этим делом каждый день, то наступит)

    • @mistertwink
      @mistertwink 7 місяців тому

      @@NightTrainCode а ты случайно репетиторством по юнити не занимаешься? 😀

    • @NightTrainCode
      @NightTrainCode  7 місяців тому +1

      @@mistertwink Иногда занимаюсь)
      Напиши мне вк / в тг, если интересно

  • @proKaps
    @proKaps 2 роки тому +1

    Топово!

  • @lewaplay
    @lewaplay 2 роки тому +1

    13:03 сильно!

  • @nfurtin
    @nfurtin 2 роки тому +1

    Супер годно, буду скидывать этот видос все джунам перед началом работы, да и некоторым мидлам не помешало бы)

    • @NightTrainCode
      @NightTrainCode  2 роки тому

      Ахах, спасибо большое, рад помочь)
      Потом мой курс от нуля до джуна, как выйдет, можешь так же распространять 😹

  • @yggdrasills
    @yggdrasills 2 роки тому +1

    12:25. Проверяя на null оператор is является самым производительным. Попробуйте взять бенчмарки

    • @NightTrainCode
      @NightTrainCode  2 роки тому

      Ну, как-то тестил я "==" и "is" в профайлере ради интереса и "==" был пошустрее

    • @yggdrasills
      @yggdrasills 2 роки тому +1

      @@NightTrainCode стало интересно. Проверил и оказалось, что is все же быстрее в 2 раза. При том, что == как раз производит всякую магию в методе Object.CompareBaseObjects. Вначале идет апкаст в тип object и проверяется уже object == null, а после еще проверяет Object.IsNativeObjectAlive, где под капотом все равно все сводится к оператору is). Замеры проводил через Perfomance Test Report библиотеку

  • @strelok6903
    @strelok6903 2 роки тому +1

    Красава продолжай ,тащи канал ,очень полезно ,выручаешь оч хорошо, я как раз начинаю делать игру ,и твои уроки кстати

    • @NightTrainCode
      @NightTrainCode  2 роки тому

      На здоровье, спасибо за коммент)

  • @SeawardOnline
    @SeawardOnline Рік тому +1

    using Random = UnityEngine.Random;
    А что так можно было? Ура! Спасибо!

  • @MrVoronaExtra
    @MrVoronaExtra Рік тому

    Лучший просто

  • @user-hq2wg8pg1l
    @user-hq2wg8pg1l Рік тому

    Есть ещё одна удобная штука.
    Обычный метод
    void Start() { }
    Можно заменить на
    IEnumerator Start() {}
    Юнити запустит его как обычный старт. Но как корутину. Можно использовать для инициализаций.
    IEnumerator Start()
    {
    while( Game.IsInit == false)
    {
    yield return null;
    {
    {

    • @NightTrainCode
      @NightTrainCode  Рік тому +1

      IEnumerator - зло, никогда его не юзаем, только асинки
      А про то, к каким ошибкам может привести while при его неправильном использовании и переходе между сценами вообще молчу

  • @RomanUnreal
    @RomanUnreal 2 роки тому +1

    Я слышал есть способ с помощью кода переносить изменения с одной сцены на другую покажешь?
    Например я сделал интерфейс на 1 уровне, а мне нужен на всех 30 уровнях, мне же придется копировать его и вставлять в каждую сцену и потом ещё ссылки в инспекторе расставлять?

    • @NightTrainCode
      @NightTrainCode  2 роки тому +1

      Для этого и нужны префабы) В видео про LOD Group я про них немного рассказал. Ты можешь создать один объект, вносить в него изменения и они применятся на всех сценах сразу
      Про них тоже по плану есть ролик. Грамотная работа с префабами - тоже отдельный вид искусства)
      Ссылки в инспекторе обычно я прокидываю только в префабах внутри этого самого префаба. Чтобы я его в любой момент закинул на сцену и не нужно было со сцены в него что-то прокинуть через инспектор или наоборот

  • @user-de1wo4xd4j
    @user-de1wo4xd4j Рік тому +1

    Привет! Слушай у меня небольшая каша в голове возникла, может расскажешь что да как:
    Значит у нас есть несколько видов делегатов Action UnityAction EventHandler
    Как я разобрался UnityAction используется когда надо что-то в Unity UI передать.
    Но вот чем отличается Action от event EventHandler для меня загадка. И то и то одинаково используется, так в чем разница?

  • @user-oe8og9oy9o
    @user-oe8og9oy9o 2 роки тому

    Качество на высоте, дружище! Мб уже писали, но null-coalescing (??=, ??) лучше избегать в unity, особенно новичкам. Загугли, у юньки есть проблемы с ним, вроде как до сих пор не пофиксили.

    • @NightTrainCode
      @NightTrainCode  2 роки тому

      Спасибо)
      Да, трабл в статике я уже с ними нашёл, про что сказал в видео. А так пока всё было окей

    • @sh42913
      @sh42913 2 роки тому +3

      @@NightTrainCode, не там дело не в статике на самом деле, а в том, что проверка на null для UnityEngine.Object реализована своя особенная(override Equals()), с обращением к нативной части внутри. Когда мы дестроим UnityEngine.Object, то он уничтожается в нативной части движка, а вот C#-оболочка продолжает существовать и фактически для C# она != null, поэтому весь шарповый сахарок(?./??/etc) видит живую оболочку и говорит "Да не, всё ок, он не нул". Поэтому для юнитёвских объектов всегда надо проверять явно ==/!=/Equals(null). Так же эта особенная проверка теряется, если мы сохраняем ссылку на интерфейс, реализованный в юнити-объекте, тк компилятор больше не знает, что на той стороне у нас UnityEngine.Object и надо использовать особый Equals().

  • @user-he2ow4wr9c
    @user-he2ow4wr9c 2 роки тому

    Видео огонь, некоторые моменты значительно упростят кодинг, будет ли видео про addressables?

  • @bishopcupoison4550
    @bishopcupoison4550 8 місяців тому +1

    Ля ты батя!

  • @robertbaran1216
    @robertbaran1216 Рік тому +2

    Люююто недооценен. Очень крутой контент по юнити и шарпу, особенно для тех, кто знания расширяет, подтипа меня. Базу взял у Сакутина, развиваю знания с тобой, спасибо за контент, бро 🔥

    • @NightTrainCode
      @NightTrainCode  Рік тому

      На здоровье, спасибо большое)

  • @VitVit312
    @VitVit312 2 роки тому +1

    Доров сахарок, давно тебя не было, у нас тож рост произошёл за это время, больше 1млн установок без вложений в рекламу
    Как обычно у тебя хороший контент :)
    Надеюсь больше не будешь пропадать :)

    • @NightTrainCode
      @NightTrainCode  2 роки тому

      Привет, поиск по запросу - мощная вещь, поздравляю)
      Спасибо, надеюсь, что минимум по видосику в месяц будет выходить

  • @abobaabobus7010
    @abobaabobus7010 2 роки тому +1

    Про выражения switch хотелось бы по подробнее(для зрителей), штука мощная, но не все её понимают, хотя там 5 минут поиграться и почитать документацию, но у меня коллеги на работе до сих пор не вывозят логику работы такого выражения, особенно когда прямо там объявляешь переменные, так еще и условия проверяешь

    • @NightTrainCode
      @NightTrainCode  2 роки тому

      По идее то да, с большинством фишечек поиграться по 5 минут и разобраться, что к чему
      А про switch можно, конечно, ещё было пару примеров снять с другими типами, но всё равно смысл один и тот же
      В курсе уже буду такие моменты тщательно разжевывать)

  • @GGamess
    @GGamess Рік тому +1

    ждем рецептов шашлыка

  • @armatyrian1517
    @armatyrian1517 2 роки тому

    оно живое

  • @GameDevWasteland
    @GameDevWasteland Рік тому +2

    Bro, в свойствах нет двух аксессоров Эсть get аксессор и set мутатор -)

  • @dilemmafixe9340
    @dilemmafixe9340 Рік тому

    Привет 13:17 пытаюсь повторить , но ничего не понимаю не работает , повесил наследников на кубы колайдеры есть , на тригерах ис тригер есть , двигаю их и так и сяк , но ответа ноль . Код польностью идентичен . Помогите кто может !

    • @NightTrainCode
      @NightTrainCode  Рік тому

      Ты добавил Rigidbody на движущийся объект? Вроде можно isKinematic включить, но лишь бы RB был

  • @Lucio11a
    @Lucio11a Рік тому +1

    Спасибо за видео!..
    Интересно, сколько надо наяривать в Unity, чтобы так его понимать и писать норм код?.. Кое-какими фишками из ролика я, конечно, пользовался. Например публичными полями с лямбда, вместо свойств, или запихиванием группы объектов через замочек (не в том же виде, что в видео, но вообще... типа пула объектов)
    Но в остальном - куча нового, куча непонятного...
    Я тут к дз на курсах наблюдателя к шашкам прикрутить не могу :D чтоб ходы записывать, а потом проигрывать, не то что код вменяемый писать...

    • @NightTrainCode
      @NightTrainCode  Рік тому

      Ахахах, спасибо за комментарий, всё с опытом придёт)

  • @KENISEG
    @KENISEG 2 роки тому +1

    когда геткомпонент стал тяжелым методом?)) если объект известен, он чисто по нему проверяет наличие компонента и всё.
    вот файндобжект это да, юнити пердак рвёт.

  • @hiroprotagonist9240
    @hiroprotagonist9240 2 роки тому +1

    Спасибо за видос✌
    Ребят посоветуйте с чего начать в Unity c#

    • @NightTrainCode
      @NightTrainCode  2 роки тому

      Посоветовал бы один курс на Udemy, так их там сейчас приобрести нельзя в России :/
      А свой курс от нуля до джуна буду пилить, но на это нужно время

    • @andrey30966
      @andrey30966 2 роки тому

      Пройди какой то хороший курс. Что бы основы все объяснили - и сложилась некая цельная картинка что да как.

    • @NightTrainCode
      @NightTrainCode  2 роки тому

      @@andrey30966 Вот да. А порекомендовать на данный момент я могу только курсы от Сакутина, за остальные не ручаюсь)

  • @newGames_0
    @newGames_0 Рік тому

    Мужик, в ютубе запрос выдаёт лишь английские варианты. Попробуй сделать видос на эту тему.

  • @TheDzzirtuoz
    @TheDzzirtuoz 2 роки тому +1

    Великий суп наварили

  • @mrdungeonmaster8553
    @mrdungeonmaster8553 Рік тому

    Привет, попробовал сделать Instantiate не для GameObject, а для MonoBehavoir, как у тебя показано в первом же примере. Unity 2021.2.16f1, InvalidCastException.

    • @NightTrainCode
      @NightTrainCode  Рік тому

      А какой смысл в том, чтобы указывать MonoBehaviour?)

    • @mrdungeonmaster8553
      @mrdungeonmaster8553 Рік тому

      @@NightTrainCode А разве GetComponent работает для еще каких-то типов? Вернее, как он отработает, если не будет явного подключения к GameObject другого типа? MonoBehavior же через инспектор подключаем к GameObject. Логично, что это не просто MonoBehavior, а дочерний класс от него. Мне просто не доводилось видеть ни в каких видео или на форумах, чтобы GetComponent использовали не для получения MonoBehavior скрипта

  • @yummybunny7351
    @yummybunny7351 2 роки тому +1

    На 5:35 можно где-то код найти на гитхабе?
    Спасибо за видео.

    • @NightTrainCode
      @NightTrainCode  2 роки тому +2

      На здоровье)
      Да, держи
      github.com/MeeXaSiK/MonoCache/blob/main/Code/System/NightSugar.cs

  • @lukabrykaylo
    @lukabrykaylo 2 роки тому

    Какие меры можно предпринять, если при переходе из одной сцены в другую, сцена на которую я переходу, затемняется?

    • @NightTrainCode
      @NightTrainCode  2 роки тому

      У меня такое было, а в билде всё ок. Вроде с обновлением версию юнити ушло
      Может быть у тебя в коде в статике проблема, но маловероятно

    • @lukabrykaylo
      @lukabrykaylo 2 роки тому

      @@NightTrainCode в билде у меня также затемняется. А старые проекти без проблем открываются с обновлением юнити?

    • @NightTrainCode
      @NightTrainCode  2 роки тому

      @@lukabrykaylo На работе один проект бывает через две-три версии новые проходит и всё хорошо)
      Может свет не запечён или автогенегарция стоит

    • @lukabrykaylo
      @lukabrykaylo 2 роки тому

      @@NightTrainCode не помогла новая версия.. а где посмотреть автогенерацию?

    • @NightTrainCode
      @NightTrainCode  2 роки тому

      @@lukabrykaylo Rendering -> Lighting

  • @user-sp5zo9nv7d
    @user-sp5zo9nv7d 2 роки тому

    Привет, можешь сделать видео, как ты реализовываешь некий проект на Leo ECS? Да, у тебя было видео, но в какие - то моменты ты съедаешь слова, что - то недоговариваешь, что вполне логично, ведь видео на 20 минут. А что если просто сделать полноценную игру используя данный архитектурный паттерн. Уверен, что было бы очень круто и полезно. Заранее спасибо)

    • @NightTrainCode
      @NightTrainCode  2 роки тому

      Привет. В теории можно, а так, не юзаю ECS и выжимаю максимум из монобехов. Пока что мне это не очень интересно)

  • @SMT-ks8yp
    @SMT-ks8yp 2 роки тому

    2:20 странное, я использовал разве что Instantiate().GetComponent(). (Инстантиэйт возвращает объект, и из него сразу ГетКомпонент.) Но если ГетКомпонент можно сократить, круто. А если всё-таки компонента не окажется?
    9:57 А этот ключ event работает на UnityEvent, например?
    12:20 так стоп, то есть, можно одновременно делать проверку на is и при прохождении сразу получать переменную нужного типа, не используя дальше в ветке as?

    • @NightTrainCode
      @NightTrainCode  2 роки тому

      1) Его там не может не оказаться, так как в поле мы указываем нужный тип. То есть в поле Unit я не смогу засунуть рандомный GameObject через инспектор
      2) Не использую UnityEvent. Это класс, а не делегат. Его можно сделать с { get; private set; }, а подписываться и отписываться через AddListener и RemoveListener. Ключ event туда не засунешь
      3) Чего?)

    • @SMT-ks8yp
      @SMT-ks8yp 2 роки тому

      @@NightTrainCode
      1) То есть, мы не можем попытаться присвоить значение этому полю через Instantiate если нужного компонента на создаваемом объекте нет? Или можем, но поле останется как было?
      2) А, понятно.
      3) Ну,
      if(variable is NeededClass) {
      var newVariable = variable as NeededClass
      }
      else
      if(variable is AnotherClass) {
      ...
      }
      Вот типа такого у меня было, а получается, что присвоение можно делать прямо оператором is.

    • @NightTrainCode
      @NightTrainCode  2 роки тому

      @@SMT-ks8yp 1) Ну объявляем поле Unit. В него мы никак не перетащим объект без этого класса через инспектор
      3) if (variable is AnyClass anyClass)

    • @SMT-ks8yp
      @SMT-ks8yp 2 роки тому

      @@NightTrainCode
      1) ой, всё, я напутал, это же мы не ранее объявленной переменной присваиваем, это мы копируем объект с компонентом, на который там ссылка.

  • @newGames_0
    @newGames_0 2 роки тому +1

    Ещё фишек

  • @dimahorbik1163
    @dimahorbik1163 Рік тому

    Чувак если в райдере это всё само делается при форматировании кода

  • @DmitryTrump
    @DmitryTrump 2 роки тому

    Привет. Ты даешь частные уроки ?

    • @NightTrainCode
      @NightTrainCode  2 роки тому

      Привет, я всё могу)
      Напиши вк (cs_exe) или тг (meexasik)

  • @qw1ntwhyu701
    @qw1ntwhyu701 2 роки тому

    Скидки в Asset store - круто, но купить в нём ассеты нельзя :с

    • @NightTrainCode
      @NightTrainCode  2 роки тому

      Да, точно, грустно немного. Рад, что успел купить всё ещё полгода назад для своей игры

  • @yummybunny7351
    @yummybunny7351 2 роки тому

    А на 12:30 есть код? В гитхабе не нашел

    • @NightTrainCode
      @NightTrainCode  2 роки тому

      Не-а, пока не выкладывал. Если ты про атрибут "as", то да. Там Modular System, которую я ещё не отполировал для гитхаба, чтобы выложить)

    • @yummybunny7351
      @yummybunny7351 2 роки тому

      ​@@NightTrainCode в принципе хотел глянуть на весь namespace Development.Glbal....

    • @NightTrainCode
      @NightTrainCode  2 роки тому +1

      @@yummybunny7351 Ой, там у меня миллион скриптов)
      Много чего оттуда уже на гитхаб есть. В основном мои системки там и шорт-каты

  • @user-wh1rc3bv4g
    @user-wh1rc3bv4g 8 місяців тому

    Там ECS уже не бета и теперь ничего не понятно, я бы посмотрел видосик для чайников

  • @moranyt8299
    @moranyt8299 2 роки тому

    Вообще, фишки топовые, но как я заметил, присутствует кучу лямбда выражений и других способов быстро сократить код. Проблема такого применения в том, что это может быть не читаемо как минимум для новичка и как максимум для хорошего мидла, при условии что этих выражений чрезмерно много и они только путают. Я не говорю что стоит от них отказываться, но и пользоваться ими стоит с умом, чтобы посмотрев на условный код, было сразу понятно что здесь имеется ввиду. За примерами далеко ходить не нужно, стоит попробовать вместо человеческого if else переделать это в лямбду, уже придется остановиться на время чтобы понять что где да как. Так что, по моему скромному, я рекомендую использовать эти выражения только тогда, когда вы сами или ваша команда без проблем сможет понять что вы имели ввиду. Пасыба за видос =)

    • @NightTrainCode
      @NightTrainCode  2 роки тому +1

      На здоровье)
      Ну, прежде, чем читать код, нужно хорошо знать язык программирования. Ту же аналогию можно и с обычными языками провести
      Спасибо за коммент)

    • @argon9113
      @argon9113 2 роки тому +2

      приучать к нормальному коду, а то так можно всю жизнь избегать чего-то сложнее 1+1

    • @NightTrainCode
      @NightTrainCode  2 роки тому

      @@argon9113 Именно

  • @Alukard284
    @Alukard284 3 місяці тому

    Рощщ

  • @Cyb11893
    @Cyb11893 Рік тому

    А почему не на анрил. Сейчас все туда переходят

  • @mypaxa003
    @mypaxa003 Рік тому

    Мда. Продвинутый...