От Junior к Senior Unity разработчику. 10 советов по программированию

  Рет қаралды 37,835

Роман Сакутин

Роман Сакутин

Күн бұрын

Рассказал о восьми практиках их наших стандартов которые сделают ваш код только лучше.
Обучение с нуля с гарантией трудоустройства - ijunior.ru/unity-start?...
Доска - trello.com/b/aerR0R28/unity
МОЯ КНИГА - csharpbook.sakutin.ru
Я В VK - rsakutin
ЯЮниор:
Группа - holymonkey_sandbox
ЧАТ В ТЕЛЕГЕ - t.me/csharp_faggots_fan_club
Discord - / discord
INSTA - / sakutinhuytin
Что внутри:
00:00 Введение
00:24 1. Работа с тегами
01:34 2. Динамическое создание объектов
03:47 3. Загрузка сцен
05:23 4. Ivoke\StartCorutine
06:24 5. Отказ от строковых литералов
07:44 6. Название событий
10:03 7. Оформление UnityEvent
11:40 8. Секретный совет

Пікірлер: 86
@AlexStraga
@AlexStraga 3 жыл бұрын
Единственно оговорился что CoinCollected это вызов именно когда все уже случилось. Даже в самом тексте так
@rsakutin
@rsakutin 3 жыл бұрын
Вот это я затраил во время записи
@anagr_
@anagr_ 3 жыл бұрын
Только хотел написать, и вижу этот комент )) Да, написал на слайде правильно, а озвучил наоброт. Ну ничего, бывает ))
@rail3213
@rail3213 3 жыл бұрын
@@anagr_ тоже зашел написать. А тут уже все есть)
@mikel8205
@mikel8205 3 жыл бұрын
А я думаю, че не так... И вроде по логике наоборот.
@edenlevi8494
@edenlevi8494 3 жыл бұрын
Dunno if anyone gives a shit but if you're stoned like me atm then you can watch all the latest series on instaflixxer. Been binge watching with my girlfriend lately :)
@govdamikhaylo4183
@govdamikhaylo4183 3 жыл бұрын
Мои поздравления Роман видео вышло реально не плохим
@user-dm1mh5or1w
@user-dm1mh5or1w 3 жыл бұрын
Отличный видос с позитивным настроем) За каналы полезные в конце спасибо, про Соера только знал
@seldemirov
@seldemirov 3 жыл бұрын
Ром, поздравляю. Вышло отлично. Новый уровень видосов)
@vladyslavhorbatiuk3089
@vladyslavhorbatiuk3089 3 жыл бұрын
Братик, вот таких информативных видео побольше. Отличное видео, спасибо!
@andreyas44
@andreyas44 3 жыл бұрын
Да ну.. Лайк!!! Без токсичности, без тупых оскорблений. Я здесь хоть что то новое узнал, хоть и большинство вещей знаю, но всё же.. Спасибо хоть за что то обучающее на канале!
@glockman7574
@glockman7574 3 жыл бұрын
Я думал в этом видео не будет хороших советов но в конце реально хороший совет который покрывает весь ролик только за последний совет поставлю лайк
@glockman7574
@glockman7574 3 жыл бұрын
@@_mirai но как бы без подписки на хауди хо у тебя ничего не выйдет
@keraitan8472
@keraitan8472 2 жыл бұрын
Большое спасибо за выпуск) полезен как никогда
@nelavas4651
@nelavas4651 3 жыл бұрын
Я только что искал такие видео и мне пришло увидомление с таким же содержанием.. Повезло повезло
@flexterion
@flexterion 3 жыл бұрын
Вы Великий Человек! Вы показываете всем мастер класс
@tcunay1
@tcunay1 3 жыл бұрын
Очень полезное видео!
@darkgaming8022
@darkgaming8022 3 жыл бұрын
Опа надо сохранить, спасибо за топ ролик. Можешь снять видео по каким лучше книгам изучать c#. Было бы интересно посмотреть.
@inshii_nik
@inshii_nik 3 жыл бұрын
Как говорит сам Роман, то книги - прошлый век, лучше учиться на практике. И я в целом согласен с ним. Только на практике ты понимаешь что тебя может ждать в будущем
@hafferloa7925
@hafferloa7925 3 жыл бұрын
Красава! Лучший учитель!
@PelipUnityDev
@PelipUnityDev 3 жыл бұрын
За советы спасибо. Видос классный
@typedef55
@typedef55 3 жыл бұрын
Лайфхак с c# ивентами и юнитёвскими ивентами оч интересный) Хотя я вообще не любли юнитёвские ивенты и везде стараюсь их избегать, чтобы максимально убрать какую-то настройку со сцены и объектов
@PAVLIK_CHANNEL
@PAVLIK_CHANNEL 3 жыл бұрын
Навело на мысль тоже поделиться личным опытом: 1. Избегать ивенты юнити, которые указываются через инспектор - не надежно, использования метода не видно в Find Usages, можно удалить казалось бы не нужный метод, так как его никто не вызывает и все сломать 2. Не надеяться на Start и Awake, особенно если в них вызываются другие компоненты, которые могут быть еще не проинициализированы, я кучу раз фиксил баги с разных проектов, где что-то вызывается в Start, и триггерит nullreference. Лучше минимизировать точки входа, и все что возможно инитить в нужном месте. 3. Отказаться от корутин и инвоков, во первых производительность, во вторых их дебажить - это ад, для меня корутины - что-то на уровне goto. Еще у корутин есть серьезный минус: если объект отключен - корутина не стартанет, и вся секвенция зависнет. Любую корутину можно заменить на что-то самописное более надежное. 4. Обязательно слайзить графику, и паковать в атласы 5. Атласы не должны ссылаться на одну и ту же графику, иначе она дублируется в памяти. В бандлах - история еще плачевнее, достаточно заюзать один спрайт из атласа в бандле - и весь атлас попадет в этот бандл. Я так кучу бандлов оптимизировал как-то, в каждом из бандлов юзалось куча атласов и бандлы весили раз в 10 больше чем должны. Дублирующиеся ресурсы я либо не ложу в атлас вообще, чтобы из-за одной монетки не тянулся целый атас, либо дублирую эту монетку в каждый бандл, т.к. лучше по одному продублированному спрайту в бандле, чем по одному продублированному атласу. 6. MVC, везде MVC, монобехи - это вьюшки с интерфейсом, ничего не знающие о моделях, только отображают через методы то, что им сказали, и диспатчат ивенты. 7. Допустим если есть разные объекты, и нужны спрайты, которые меняются динамически - нужно не вешать на каждый префаб кучу спрайтов, а создать вместо этого ScriptableObject, который будет раздавать нужные спрайты по запрашиваемому типу 8. Не ленимся делать методы с отписками от ивентов и занулениями данных, у всего, что только можно, иначе когда прилетит задача на перезагрузку сцены/игры - вся статика останется висеть в памяти и после перезагрузки могут быть баги, которые потом недели две чистить придется 9. Обязательно юзать пулы объектов, в идеале написать свой контроллер пулов, чтобы не инстантиэйтить на поле кучу одинаковых объектов вызывая по 50мб аллокаций и как следствие фризы у игрока. 10. Ставим табу на GetComponent, он медленный, TryGetComponent, кстати, юзать вроде можно, но мне и без него ок 11. Платформозависимый код оборачивать не в #if UNITY_ANDROID, а лучше написать синглтон, который вернет текущую платформу из метода, и использовать его. Таким образом мы никогда не столкнемся с тем, что кто-то удалил какой-то неймспейс по рекомендации идешки, а он оказывается был нужен в платформе, скажем, андроида. Да и сам платформозависимый код в таком случае не будет игнорироваться IDEшкой, и можно будет его изменять не переключая текущую платформу
@konneuktrevor9295
@konneuktrevor9295 6 ай бұрын
GetComponent и TryGetComponent ничем не отличаются. Просто второй не аллоцирует мусор в эдиторе.
@PAVLIK_CHANNEL
@PAVLIK_CHANNEL 6 ай бұрын
@@konneuktrevor9295 из чего выходит, что всё таки чем-то да отличаются
@dmitrylitvinov5449
@dmitrylitvinov5449 3 жыл бұрын
Я бы еще добавил два интересных канала, к каналам которые назвал автор ( если сакутин еще и упомянит их, будет вери вел) : 1. kzbin.info/door/6wnai488mwec_FUVfdl84w - Чувак реализует прикольные вещи на UNITY (очень годно и интересно лично для меня было его смотреть) 2. kzbin.info/door/MtsKfLKv7Hv6y2Cy3KckgA - Канал про архитектуру проектов в Unity и про паттерны
@andreyas44
@andreyas44 3 жыл бұрын
Ребята, в топ!!! Обожаю этот канал (1. Эмеральд..), прям годные вещи говорит и шарит в языке. И интересный
@Djeyede
@Djeyede 3 жыл бұрын
Поясните про второй пунк, пожалуйста. Прокидывать параметры и компоненты созданному объекту из того же места, откуда он создается - хорошая практика? Или же можно поступить наоборот, и в созданном объекте (в его скрипте) в Awake или Start забирать самому эти параметры? Например Заранее их добавить через [Serializefield] в "спавнер", а в Instantiate указать спавнер как родителя? А в Start или Awake вызывать transform.GetComponentInParent() и т.п. ? Заранее спасибо
@user-cf5ce9ht1s
@user-cf5ce9ht1s 3 жыл бұрын
Можно ли в приложение добавлять ролик с ютюб? Бан не прилетит после публикации в плеймаркет?
@GamDevRus
@GamDevRus 2 жыл бұрын
Роман, спасибо подписался на канал хауди хо. :) когда вы помирились с хауди?
@vadmall85
@vadmall85 3 жыл бұрын
8:30 - Сказанное полностью противоположно тому, что написано на экране.
@user-uj8lt5kh2k
@user-uj8lt5kh2k 3 жыл бұрын
Оговорился как мне кажется, ed - действие закончено - ing действие в процессе
@user-ql7wy4ui3s
@user-ql7wy4ui3s 3 жыл бұрын
Ну вот это я ожидал так долго от Ромы.
@HHgg1231
@HHgg1231 3 жыл бұрын
Зачем ты используешь в аниматоре SetFloat(string, float), нормальные пацаны используют SetFloat(int, float), предварительно сохранив ключ в public static readonly int Name = Animator.StringToHash("Name"); тоже самое и в шейдерах, все ключи с Shader.PropertyToID("Name")
@rsakutin
@rsakutin 3 жыл бұрын
Да, хеширование хорошая практика. Надо это тоже не забыть внести в стандарт :)
@user-pp8vz3gw1b
@user-pp8vz3gw1b Жыл бұрын
А для 8-го совета ты не подходишь?
@JOrJO_-cw4js
@JOrJO_-cw4js 3 жыл бұрын
Первое апреля уже прошло, Рома
@emptysoul438
@emptysoul438 3 жыл бұрын
В 6-м пункте говорим одно, а в тексте другое) И в тексте, кажется, правильнее
@rsakutin
@rsakutin 3 жыл бұрын
Ага
@behappianstudio3576
@behappianstudio3576 3 жыл бұрын
Я преисполнился!
@jz4887
@jz4887 3 жыл бұрын
❤️
@sergey.stafeev
@sergey.stafeev 3 жыл бұрын
2. Если пехота шагает в Tower Defense, то не нужно постоянно создавать новые объекты, нужен пул заранее созданных объектов, и уже с ними работать (забирать из пула, помещать обратно в пул и т.д.).
@rsakutin
@rsakutin 3 жыл бұрын
А в пуле они откуда возьмутся? :)
@varan9412
@varan9412 3 жыл бұрын
Советы хорошие, но довольно очевидные для тех кто уже имеет опыт (1-2 года). Хочется рили неочевидные моменты от разработчика с 10-ти летним стажем)
@1pampers13aby7
@1pampers13aby7 2 жыл бұрын
Мне от тоже интересно: чем он 10 лет занимался? Болаболства много, но где игры. Именно игры, а не какой то набор 2 механик, какой то недо прототип
@crazymax5204
@crazymax5204 2 жыл бұрын
Ты где раньше был?!
@kirillsviderski4739
@kirillsviderski4739 3 жыл бұрын
по шарпу не видел никого лучше Nick Chapsas на ютубе. Рекомендую
@xFieRZex
@xFieRZex 3 жыл бұрын
В тайм-кодах ошибочка: Ivoke\StartCorutine
@shadowlife5331
@shadowlife5331 Жыл бұрын
Я не программист и не смотрю на "чистоту кодеца" стараюсь писать чтобы хоть что то работало для тестов (учусь на геймдизайнера)
@damirmirasov3785
@damirmirasov3785 3 жыл бұрын
Я слыхал ты женился. Желаю вам счастья.
@user-is6xn8kt6b
@user-is6xn8kt6b 3 жыл бұрын
Планирую написать игру на движке unity,изначально игра против компа,но развиваться игра должна в сторону онлайн один на один.скажите поддерживает ли unity такое(игра не требовательна к граф. ресурсам)
@PasterLak
@PasterLak 3 жыл бұрын
Юнити всё поддерживает, это же игровой движок, а не редактор карт
@user-bp5qu9ie5o
@user-bp5qu9ie5o 2 жыл бұрын
В плане уже 10 лет???
@behappianstudio3576
@behappianstudio3576 3 жыл бұрын
11:45 - Напугал!) Я уж чуть было не отписался!)
@Qyrtix
@Qyrtix 2 жыл бұрын
Вот это реально от профессионала, не то что от хауди
@murosekai
@murosekai 3 жыл бұрын
Что за дискриминация Хауди Хо? Создаю ассоциацию по защите прав Хауди Хо
@GamDevRus
@GamDevRus 2 жыл бұрын
да вроде наоборот, рекомендовали его канал
@eluone6733
@eluone6733 2 жыл бұрын
Это же Jira, owo
@sevenlands2354
@sevenlands2354 3 жыл бұрын
Из всего ролика понял что нужно подписаться на Хауди-Хо и всё я уже про гейм-дев (и всего за 1 час) 😂😂😂 Не то что у Романа 11 месяцев учиться 😂
@I.G.R
@I.G.R 3 жыл бұрын
_Почему _некоторые _названия _пишут с _подчеркиванием _вначале?
@user-we4dz3fj1y
@user-we4dz3fj1y 3 жыл бұрын
поля класса с модификатором доступа private именуются _kaktoTak
@rsakutin
@rsakutin 3 жыл бұрын
Отдельное видео про это было
@I.G.R
@I.G.R 3 жыл бұрын
@@rsakutin скажи пожалуйста как оно называется?
@rsakutin
@rsakutin 3 жыл бұрын
@@I.G.R как работать с полями unity best practice #1
@I.G.R
@I.G.R 3 жыл бұрын
@@rsakutin спасибо)
@antonsimkin
@antonsimkin 2 жыл бұрын
ИВЕНТ
@gandrew8102
@gandrew8102 2 жыл бұрын
Закадровый голос обладает нелегкой формой дэбильности🌝
@GexPlayerMD
@GexPlayerMD 3 жыл бұрын
Слово "профессионал", у меня теперь плотно ассоциируется с Хауди, и ему подобными... Печалька. 🤔
@GamDevRus
@GamDevRus 2 жыл бұрын
это дзря
@GexPlayerMD
@GexPlayerMD 2 жыл бұрын
@@GamDevRus Ну, не совсем зря. Он профессионал в создании бесполезных видео, которые собирают миллионы просмотров.🙂
@fullboarduck5491
@fullboarduck5491 3 жыл бұрын
Было бы круто просто C#
@uso2484
@uso2484 3 жыл бұрын
Первый?
@dreamteams
@dreamteams 3 жыл бұрын
Yamete kudasai 🤣
@unciauncia
@unciauncia 3 жыл бұрын
Лучший совет сменить юнити на анрил и учить С++.
@grener4959
@grener4959 3 жыл бұрын
Зачем?
@Dadadadam999
@Dadadadam999 3 жыл бұрын
Сменить юнити на Дефолд тогда уж.) Ну или на godo.
@grener4959
@grener4959 3 жыл бұрын
@@Dadadadam999, зачем?
@kekchannel
@kekchannel 3 жыл бұрын
Я мб не понимаю, но почему чел делает кликбейт названия в стиле "какой говнокод у сеньора" , "суперсоветы от профессионала", "разбор плохого кода Ааа разработчика", но при этом имеет ноль успешных игр в своем портфолио?
@user-jw4nt3qm6q
@user-jw4nt3qm6q 3 жыл бұрын
Потому что он сеньор-помидор
@rsakutin
@rsakutin 3 жыл бұрын
Так я программист а не продюсер, у меня функция другая
@philipinhoi8091
@philipinhoi8091 3 жыл бұрын
Не вижу профессионала который может давать советы
@AlekseyLoykuts
@AlekseyLoykuts 3 жыл бұрын
Не полезной инфы и уважения я ждал на этом канале, отписка !!! :D
@daniilparokonnyy7980
@daniilparokonnyy7980 3 жыл бұрын
7. Можно тогда уже юзать UltEvents: assetstore.unity.com/packages/tools/gui/ultevents-111307
@JackFastGame
@JackFastGame Жыл бұрын
Доводилось как-то пользоваться этим плагином, он просто напросто ебёт инкапсуляцию во все щели :)
Расследование тайны нижнего подчёркивания в C#
13:54
Дибала против вратаря Легенды
00:33
Mr. Oleynik
Рет қаралды 4,1 МЛН
Все СЕКРЕТЫ графики за 30 лет развития
20:23
Роман Сакутин
Рет қаралды 32 М.
Docker Для Начинающих за 1 Час | Docker с Нуля
52:43
ЭТИ КНИГИ СДЕЛАЮТ ИЗ ТЕБЯ ХАКЕРА
16:38
Secret Wireless charger 😱 #shorts
0:28
Mr DegrEE
Рет қаралды 2,3 МЛН
В России ускорили интернет в 1000 раз
0:18
Короче, новости
Рет қаралды 926 М.
ПОКУПКА ТЕЛЕФОНА С АВИТО?🤭
1:00
Корнеич
Рет қаралды 3,3 МЛН
Main filter..
0:15
CikoYt
Рет қаралды 13 МЛН