Тёмный
ABG
ABG
ABG
Подписаться
На этом канале Unity разработчики могут почерпнуть для себя много интересного.
Комментарии
@Ker1mch1k
@Ker1mch1k 10 дней назад
скорее всего никто не прочитает но всё же все эти созданные классы должны быть в одном скрипте? (Таймкод: Процедурные анимации)
@arturberkgames
@arturberkgames 10 дней назад
Название файла, в котором находятся классы можно увидеть справа от кода (вертикально). Но их можно располагать как душе угодно, кроме конечно MonoBehaviour и ScriptableObject (они должны быть в файлах с таким же названием). Кроме того, весь проект можно скачать на Boosty или Patreon без подписки (см. описание к видео)
@Barlog2012
@Barlog2012 2 месяца назад
А разве Burst не только с джобами работает? В доке написано: "Burst is a compiler that you can use with Unity's job system"
@arturberkgames
@arturberkgames 2 месяца назад
Нет, он поддерживает и прямой вызов методов (под капотом там используется FunctionPointer). Там же в документации: docs.unity3d.com/Packages/com.unity.burst@1.8/manual/csharp-calling-burst-code.html
@Barlog2012
@Barlog2012 2 месяца назад
@@arturberkgames спасибо, вчитаюсь
@dankostin
@dankostin 4 месяца назад
Для решния всех проблем с удалением из массива, проще всего взять список. Так как все равно его надо перебирать он как раз идевльно подходит
@AlexanderGusev-p6x
@AlexanderGusev-p6x 4 месяца назад
Где это использовать? Например, я хочу свою генерацию мира как в майнкрафте переписать под такое, чтобы чанки не создавались отдельными объектами. Подойдет ли этот способ для такого?
@arturberkgames
@arturberkgames 4 месяца назад
Использовать можно в любой ситуации, включая и чанки мира. Просто следует помнить, что в этом случае затрудняется отладка, так как созданные объекты не отображаются в окне иерархии.
@AlexanderGusev-p6x
@AlexanderGusev-p6x 4 месяца назад
@@arturberkgames У Вас опыта видно больше, чем у меня. Это имеет смысл вообще? Просто мне кажется, что юнити немного тяжело каждый раз взаимодействовать с тысячами объектов. Просто хранить в отдельном классе позицию чанка, его модель и список с блоками, вместо отдельного объекта с отдельным скриптом для этого. И отрисовывать эти чанки из массива, как в видео
@arturberkgames
@arturberkgames 4 месяца назад
@@AlexanderGusev-p6x GameObject-ы предоставляют удобный функционал: иерархии, компоненты, функции жизненного цикла, редактирование в редакторе, сериализация. Если этот функционал не нужен и объектов реально тысячи, то можно задуматься. Иногда отказаться от GO вообще не получиться, например, если нужна встроенная физика, коллайдер не создашь без GO.
@AlexanderGusev-p6x
@AlexanderGusev-p6x 4 месяца назад
@@arturberkgames Спасибо за ответ
@serveladik
@serveladik 5 месяцев назад
Для новошедших - Hybrid Graphics больше не нужно добавлять Она уже встроена в URP
@mustard5387
@mustard5387 5 месяцев назад
Ab
@PearlGray-nf6cu
@PearlGray-nf6cu 5 месяцев назад
😢
@westparezal
@westparezal 5 месяцев назад
2 выпуск как для экспертов. Такое себе, новичкам не подходит совсем.
@sanzharzaitenov5268
@sanzharzaitenov5268 7 месяцев назад
Че то гости специалисты из яндекса задержались на канале
@ИльяАлексеевич-г7о
@ИльяАлексеевич-г7о 8 месяцев назад
Вроде все правильно написал, но выдает ошибку в foreach (var heightmapModifier in heightmapModifiers), говорит, что Оператор foreach не работает с переменными типа “lHeightmapModifier", так как “lHeightmapModifier" не содержит открытое определение экземпляра или расширения для “GetEnumerator", еще аргумент 2: не удается преобразовать из “lHeightmapModifier" в “lHeightmapModifier[]", и еще Оператор foreach не работает с переменными типа “lHeightmapModifier", так как “lHeightmapModifier" не содержит открытое определение экземпляра или расширения для “GetEnumerator". Эти три ошибки идут подряд начиная с первого foreach и заканчивая на втором, все три heightmapModifiers подсвечены красным.
@arturberkgames
@arturberkgames 8 месяцев назад
Скорее всего вместо GetComponentsInChildren используете метод GetComponentInChildren, который возвращает не массив, а только первый модификатор. Если что, все проекты к видео есть на Boosty (к этому видео: boosty.to/arturberk/posts/6cce2f5d-d596-4e6a-a8a5-7b8597fd75bc)
@ИльяАлексеевич-г7о
@ИльяАлексеевич-г7о 8 месяцев назад
@@arturberkgames Сейчас зашел в редактор, перепроверил. Написано "Component", дописал "s" и все заработало.
@Hafune
@Hafune 9 месяцев назад
А юнити получается тоже самое делает под капотом ? И уже сам шейдер проводит отсечение мешей которые не видно камере. Увеличится ли производительность если я таким способом буду отрисовывать большой уровень платформера буквально заменив своим скриптом кучу gameobjects ? По идее должно, если только меш рендерер как то сам не определяет рисовать ему или нет
@arturberkgames
@arturberkgames 9 месяцев назад
При вызове Graphics.DrawMesh (но не DrawMeshNow) отрисовка "встраивается" в нормальный механизм отрисовки мешей, т.е. полностью соответствует тому, как рисует меши MeshRenderer (согласно документации). Таким образом можно избавиться от использования GameObject, что конечно положительно скажется на использовании памяти и времени старта сцены. Сама скорость отрисовки мешей если и изменится, то незначительно, особенно если объекты не двигаются и не требуется пересчитывать матрицы трансформации. Видео немного устарело, сейчас лучше пользоваться методами Graphics.Render... (Graphics.RenderMesh в нашем случае)
@Hafune
@Hafune 10 месяцев назад
Збст. Захотел поправить существующие шейдеры в юнити, понял что без какого либо понимания базовых вещей не обойтись, сижу впитываю, конечно посматривая ещё и в офф доку ) Спс за труд !
@Иван-д2ф6ш
@Иван-д2ф6ш 11 месяцев назад
Shader error in 'Custom/testGeometryShader': redefinition of 'float4' at line 28 (on d3d11) почему могла такая ошибка прилететь?
@МаксимРадюш-ч6т
@МаксимРадюш-ч6т 11 месяцев назад
А шейдеры для URP делаюся также как и для Built In? Или чем отличается?
@arturberkgames
@arturberkgames 11 месяцев назад
Пока писать под URP и HDRP шейдеры с освещением и другими функциями кодом сложно, все заточено под Shader Graph. Shader Graph в принципе удовлетворяет основные запросы по созданию шейдеров. Например, в URP нет удобного способа создать шейдер с освещением, как Surface Shader в BIRP. Также для написания шейдеров на URP используется язык HLSL вместо CG. Это не значит, что CG шейдеры не поддерживаются (компилируются то они в одно и тоже). Но используется другая библиотека базовых функций (трансформация, сэмплинг текстур и т.д.).
@МаксимРадюш-ч6т
@МаксимРадюш-ч6т 11 месяцев назад
@@arturberkgames а если у меня есть шейдер который работает на built in, он будет работать в URP?
@arturberkgames
@arturberkgames 11 месяцев назад
@@МаксимРадюш-ч6т Зависит от шейдера, какие-то простые да, но большинство потребует переделки
@crypteklab
@crypteklab Год назад
Не очень понятен промежуток с хаком. Оказывается надо скопировать код шейдера из ShaderGraph и сохранить в новом обычном шейдере.
@Denis-535
@Denis-535 Год назад
С помощью этой штуки можно перехватывать все Awake и OnDestroy? Допустим для инъекции зависимостей?
@arturberkgames
@arturberkgames Год назад
Нет, с помощью PlayerLoop такое провернуть не получится
@Denis-535
@Denis-535 Год назад
@@arturberkgames многое было бы намного проще, если бы можно было перехватывать создание и уничтожение объектов.
@МихайлоДовбня-ц6ф
В этом примере есть 1 существенный недостаток. Который к сожалению я еще не выяснил как пофиксить. Если вы создадите 10 обьектов на сцене, и инициализируете систему. То как только вы удалите 3-4 элемента не по порядку, а например 10, 8, 5, 3. Вы получите Missing Reference Exception на строку updatables[i].Updatable();. И порядок выполнения так же потеряется. Если кто-то знает как починить подскажите
@yuraYura-md2od
@yuraYura-md2od Год назад
Давно не встречал настолько лаконичного и профессионального кода. Незаслуженно маленькая аудитория для такого ПРОФЕССИОНАЛА. Спасибо за контент!!!!
@qqqwwwwq
@qqqwwwwq Год назад
Привет, подскажи, пожалуйста! Хочу сделать невидимый объект, но на который падали бы тени, принцип понимаю, но никак реализовать не могу ни стандартными инструментами Unity, ни через шейдеры - ничего не получается. Хочу сделать механику как в disco elysium, где основная локация - одна большая текстура, но рилтайм тени падают на лоупольные объекты окружения.
@arturberkgames
@arturberkgames Год назад
Вот что-то подобное для BIRP: gist.github.com/ArturBerk/ba241b129d5e7c66604b34a74907a0e7 Но скорее всего в этом случае лучше реализовать экранные тени. Рисовать тени постэффектом на основе буфера глубины.
@qqqwwwwq
@qqqwwwwq Год назад
@@arturberkgames спасибо! на BIRP работает, на URP пытался переписать, но ругается на "Redefinition of _Time", поиски показали, что это связано с #include "Packages/com.unity.render-pipelines.lightweight/ShaderLibrary/Lighting.hlsl"
@arturberkgames
@arturberkgames Год назад
@@qqqwwwwq Как писать шейдеры на URP (в том числе как работать с тенями) можно ознакомиться в отдельном видео на этом канале
@9oo010
@9oo010 Год назад
Привет! У меня появились мысли, которые подошли бы для нового видео. Сделай видос о SDF и всё что с этим связано. Там куча тем и было бы круто узнать от тебя о их имплементации
@каналзаброшен-ч7ж
Привет, пожалуйста, не забрасываей канал! Твои ведео очень полезны👍
@hammakechiche7858
@hammakechiche7858 Год назад
This is the best procedural animation controller i ever seen , so smooth and flexible, but there are some issues, when walking on inclined surface , the movement directions changes , i could fix that , but i wanted to be able to walk on slope and climb walls , i could not align the MovementTarget rotation to the ray hit normal, can you help me please ?
@duoduoo6732
@duoduoo6732 Год назад
а голос чем сгенерирован?
@arturberkgames
@arturberkgames Год назад
Yandex SpeechKit
@hammakechiche7858
@hammakechiche7858 Год назад
I love the intro background , how can i find something like it ?
@arturberkgames
@arturberkgames Год назад
Unity ParticleSystem + Glow Effect + Recorder. Here is my version (LQ): drive.google.com/file/d/14Z3fw2u71gOxjars8la_G2321uMzsexY/view?usp=sharing
@hammakechiche7858
@hammakechiche7858 Год назад
@@arturberkgames You are the best
@СтаС-ъ8у
@СтаС-ъ8у Год назад
Более корректно получается осуществлять вращения не через Rigidbody , а через ConfigurableJoint , так же вычисляем вращения целевых объектов анимационной модели , за которой Active Ragdoll повторяет вращения :ConfigurableJoint joint ; var lookRotation = Quaternion.inverse(Target.rotation); joint.targetRotation = Quaternion.LookRotation(lookRotation); А можно все мышцы - Configurablejoint сделать массивом и так же массив из целевых объектов вращения и при помощи итератора for из одного класса управлять поведением Active ragdoll
@AhahaStudioTM
@AhahaStudioTM Год назад
Очень круто. Так прекрасно осознавать, что я ещё столько всего не знаю о Unity и программировании в целом. Спасибо за видео!!!
@KiZhuGames
@KiZhuGames Год назад
Крутые видосы делаешь, ты экономишь много времени.Спасибо
@KiZhuGames
@KiZhuGames Год назад
Каждый раз когда смотрю твои видосы, чувствую себя тупым
@U-ru-Ru
@U-ru-Ru Год назад
Вместо увеличения Drag нужно считать силы через пид контроллер. При использовании драга модель будет плавать как в воде при отключении следования. Для перемещения частей где нет RB можно использовать простой transform.
@arturberkgames
@arturberkgames Год назад
Совершенно согласен. Просто drag + сила - это и есть простейший ПИД контроллер без интегрирующей составляющей. Но в реальном проекте конечно лучше использовать более гибкое решение.
@redabeg
@redabeg Год назад
Есть паук, есть человек, но нет четырёх ногого перса - собаки или кота. Было бы очень хорошо увидеть такой урок.
@AlexBradley123
@AlexBradley123 Год назад
Привет, крутецкое видео, как и всегда. Не поможешь с больной для меня темой, а именно перевода векторов в трансформе с float на double? На данный момент просто сделал отдельный тип Vector3D и в нем implicit и explicit конвертацию в обычный Vector3, но душа просит большего. -)
@arturberkgames
@arturberkgames Год назад
Наткнулся недавно на такой проект: github.com/Unity-Technologies/com.unity.gis.high-precision-framework. Позволяет вместо обычного компонента Transform использовать HPTransform, который построен на 64-битных числах с плав. запятой. Сам не пробовал, но вдруг чем-то поможет.
@AlexBradley123
@AlexBradley123 Год назад
@@arturberkgames спасибо, сохранил, попробую.)
@just_mego
@just_mego Год назад
На видео упущен главный момент - где на метод вешается атрибут Button. Или это я упустил) А в целом, спасибо за реализацию, очень интересно
@arturberkgames
@arturberkgames Год назад
Похоже так и есть
@sh42913
@sh42913 Год назад
Думал что будет какой-то аналог PropertyDrawer, а оказалось, что всё куда увлекательнее(хоть и сильно сложнее)
@aynotation5202
@aynotation5202 Год назад
Смотрю видос и в какой-то момент понимаю, что что-то я инфы получил уже как минут на 30-40 ролика. Посмотрел время, а это только семь минут прошло 😵‍💫
@_mirai
@_mirai Год назад
Первый раз слышу про динамическую компиляцию Думаю ей можно найти много применений
@arturberkgames
@arturberkgames Год назад
Главное не забывать, что это не работает при AOT компиляции, т.е. il2cpp сборки проходят мимо.
@АнтонРешетников-з6с
Спасибо за ваше творчество, уважаемый! Как всегда познаввательно, с удовольствием посмотрел 12 минут на красивый код 👍
@alexsklyarov6792
@alexsklyarov6792 Год назад
Думаю про рефлексию и её применения в контексте Unity нужно больше видосов, спасибо за контент) 👍
@dmitriypermyakov5402
@dmitriypermyakov5402 Год назад
А в чем смысл этих телодвижений? Что это даст народному хозяйству?
@arturberkgames
@arturberkgames Год назад
Есть такой ассет - Odin Inspector. Ассет популярный, позволяет облегчить и улучшить написание редакторов. И здесь я просто попробовал показать один из способов того, как можно повторить его функционал на простейшем примере с кнопкой. Заодно показал использование Reflection и кодогенерации на конкретном примере.
@dmitriypermyakov5402
@dmitriypermyakov5402 Год назад
@@arturberkgames всегда обходил ассеты стороной. Спасибо за предупреждение.
@sh42913
@sh42913 Год назад
@@dmitriypermyakov5402, а вот и зря, Odin Inspector очень полезный инструмент и сильно экономит время, если нужно делать кастомные окна и инспекторы в Unity Editor
@dmitriypermyakov5402
@dmitriypermyakov5402 Год назад
@@sh42913 надеюсь, голову шатать кастомными решениями не придется.
@akstis4183
@akstis4183 Год назад
Кайфарик
@bogotoff
@bogotoff Год назад
Я делал для кнопок PropertyDrawer для bool переменных. [Button("Name", "MethodName")] [SerializableField] bool testButton; Минус в том приходится переменную создавать которая будет сериализоваться зря. Но не нужно генерировать код, не нужно эдитор создавать для компонента т.к. это может конфликтовать с другими эдиторами, если другие аттрибуты будут, то и для них не придётся дописывать код в генератор, и будет работать всегда.
@arturberkgames
@arturberkgames Год назад
Хороший подход для решения этой задачи. Я же, например, просто купил Odin Inspector и получил это и многое другое за разумную плату. И сразу возникла идея оценить, как можно повторить его функционал. А заодно рассмотреть использование Reflection, кодогенерации на конкретном примере.
@vitaliySobakinson
@vitaliySobakinson Год назад
Отличное ведио! Спасибо, очень полезно. Попробую у себя в проекте повторить
@arturberkgames
@arturberkgames Год назад
Напоминаю, проект (как и все остальные) доступен всем на boosty (без подписки).
@mastervolodsobeck5176
@mastervolodsobeck5176 Год назад
Благодарю, плюс в карму ютуба!
@Hafune
@Hafune Год назад
Динамическая компиляция что то новое для меня ))) Обычно мои полномочия заканчивались на сборе атрибутов рефлексией, а тут оказывается можно на лету дорисовывать логику .. круто, это наталкивает на размышления, СПС))
@arturberkgames
@arturberkgames Год назад
Рад что инфа была полезной. Забыл упомянуть, что это все работает только в редакторе и на сборках под Mono. Так что сфера применения ограничена.
@tkasch
@tkasch Год назад
Как вариант добавить атрибут ContextMenu, через него можно вызывать методы через меню компонента
@arturberkgames
@arturberkgames Год назад
Да конечно, [ContextMenu] подходит для вызова метода. Но цель была посмотреть, как сделать что-то подобное OdinInspector-у. Просто была выбрана именно кнопка для метода для примера. Но можно и другой функционал повторить на базе этого небольшого примера. Например условие на C# появления кнопки.
@tkasch
@tkasch Год назад
@@arturberkgames это понятно, комментарий был для тех, кому будет лень повторять все это ради кнопки
@davidsedrakyan
@davidsedrakyan Год назад
есть еще unity naughty attributes там тоже есть кнопка
@arturberkgames
@arturberkgames Год назад
@@tkasch Ради кнопки повторять это точно не стоит, но вот познакомиться с рефлексией и кодогенерацией можно, в чем и была цель видео.
@paulsugar632
@paulsugar632 Год назад
Первый
@arza2093
@arza2093 Год назад
Зомбика в конце жалко
@egornormul7975
@egornormul7975 Год назад
Ура, спасибо что вернулся )
@IDALGAME
@IDALGAME Год назад
🤩🤩🤩🤩
@sanded9321
@sanded9321 Год назад
Попадалось в топиках Юнити форума сравнение GetComponent и TryGetComponent, с выводами, что второй предпочтительнее и быстрее ? Что думаешь по этому поводу?