image.png917 Кб, 1200x675
Unity 3D #40 1014442 В конец треда | Веб
Прошлый тред: >>994942 (OP)

Официальный сайт: https://unity.com/ru
Документация: https://docs.unity3d.com/Manual/index.html
Уроки: https://unity3d.com/ru/learn/tutorials
Форум: https://forum.unity3d.com
Магазин ассетов: https://assetstore.unity.com

На Unity сделано много замечательных игр: Zenless Zone Zero, V Rising, Hearthstone, VRChat, Escape from Tarkov, Valheim, Pathfinder, Cuphead, Genshin Impact, Subnautica, Albion Online, Endless Space, Beat Saber, Boneworks, Rust, Блицкриг 3, Pillars of Eternity, Tyranny, Kerbal Space Program и многие другие.

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

Какие у Unity сильные стороны?
Простота разработки, удобный инструментарий, кроссплатформенность, богатая документация, огромное сообщество.

Какие у Unity слабые стороны?
Сложность в создании фотореалистичной графики. Для графики "как в Crysis" рекомендуется взять другой движок. Хотя Unity вполне способен выдавать не уступающую любым другим движкам картинку, это требует определённого навыка от разработчика.

На каких языках я могу писать скрипты для Unity?
Поддерживается написание скриптов на C# 9.0
https://docs.unity3d.com/Manual/CSharpCompiler.html

Какие есть готовые решения для создания мультиплеерной игры?
https://www.photonengine.com
https://mirror-networking.com
https://playfab.com

На каких платформах работают созданные с помощью Unity игры?
Windows, Linux, MacOS, SteamOS, Android, iOS, Windows Phone, PlayStation4, Xbox One, WebGL, Oculus Rift и многие другие. Полный список можно найти на официальном сайте. Таким образом, игры Unity работают на десктопах, на смартфонах, планшетах, приставках, в браузерах, VR-очках и некоторых других системах.

Часто вижу скриншоты с красивой природой на Unity. Как такое создать?
Очень просто! В Unity встроены удобные инструменты для создания террейна и SpeedTree для создания деревьев и готовая реализация ветра - не нужно ничего писать или скачивать и подключать плагины - ландшафт в Unity создаётся в пару кликов.

Что нужно уметь делать для создания полноценной игры, кроме Unity-разработки?
Кроме непосредственной разработки игры на Unity, требуется также уметь создавать 3D модели (3ds Max, Blender, ZBrush), 2D рисунки (GraphicsGale, Aseprite, Piskel), текстуры (Substance Designer, NeoTextureEdit), музыку (FruityLoops, Ableton). Не обязательно учить это всё - например, в 2D играх не нужны 3D модели, а музыка необходима далеко не всегда. Также вы можете скачивать элементы для ваших игр на бесплатных сайтах. Если у вас есть деньги, то все необходимые элементы можно заказать у фрилансеров на https://www.fl.ru/ (русскоязычный) или https://www.upwork.com/ (англоязычный).

Бесплатен ли Unity?
Можно свободно скачивать, использовать и продавать готовые игры на Unity с лицензией Personal - это абсолютно бесплатно! Но на бесплатной версии при запуске игры будет появляться короткий стартовый ролик "Made with Unity", а также ваши доходы ограничены 100 000 долларов в год. Для снятия этих ограничений нужно приобретать платные версии лицензий Unity. В конечном итоге, платные варианты используются лишь крупными компаниями с огромными доходами, тогда как обычные разработчики в большинстве своём используют бесплатную Personal лицензию.

Обучение по книгам (печатные издания, актуальные электронные версии книг можно скачать на официальных сайтах издателей)

Обучение языку C# книги на русском языке:

1. C# для чайников Автор книги – Джон Пол Мюллер
2. Программирование на C# для начинающих 2е части Автор: Алексей Васильев
3. Head First. Изучаем C# 4е издание Авторы: Эндрю Стиллмен, Дженнифер Грин
4. Unity и C#. Геймдев от идеи до реализации Автор: Джереми Гибсон Бонд
5. Язык программирования C# 7 и платформы .NET и .NET Core Авторы: Филипп Джепикс, Эндрю Троелсен

Для людей абсолютно не знакомых с движком есть 3и основные книги на русском языке:

1. Разработка игр на Unity 2018 за 24 часа Майка Гейга
(Знакомство с движком, изучение редактора, создание 4х простых игр практически без кода, отличное пособие для полных новичков).
2. Изучаем C# через разработку игр на Unity. 5-е издание Харрисон Ферроне
(Пошаговое освоение всех базовых знаний по программированию на языке С# в редакторе юнити, создание одной игры стрелялки от первого лица, написание искусственного интеллекта врага, книга переведена не совсем корректно и порой встречаются не просто опечатки, а серьёзные неточности перевода.)
3. Unity в действии. Мультиплатформенная разработка на C#. 3-е межд. издание Хокинг Джозеф
(Правильное построение архитектуры кода для сложных проектов, углублённое изучение программированию на C#, создание 4х полноценных игр на движке, обязательно нужно скачать код проектов, так как в книге он местами уже устарел.)

Шапка: https://pastebin.com/raw/JGUAcbwj
image2 Мб, 1950x1300
2 1014597
Котаны, может кто знает где достать ассет "Rifle_Mega_MocapAnimPack". Он ещё есть на анриал енжин. Но я не смог найти не для юнити, не для уеча. Ассет дорогой, а бесплатной демки нет. Хотелось бы прикинуть подойдёт ли он вообще.
.mp4454 Кб, mp4,
360x470, 0:08
3 1014619
Купон "CLAWBEARGAMES" до 27 марта на бесплатное получение ассета от:
https://assetstore.unity.com/publishers/40264

До этого можно было бесплатно получить крутой наборов эффектов, но я забыл вам скинуть хи-хи
image18 Кб, 568x223
5 1014801
>>4787
Бро...
6 1014820
>>4801
Мля. Обычно там устаревшие версии бесплатно. А вообще сколько он там стоит, за доступ ко всем плагинам то?
7 1014823
Госпади челы блядь, все платные ассеты есть в доступе на помойках, качайте перекачаетесь, да не самых последний версий, но подходят отлично.
image27 Кб, 1015x212
8 1014949
>>4823

>все платные ассеты есть в доступе на помойках


Я знаю только одну такую площадку - cgpeers. Однако эти пидармоты забанили мне аккаунт за инактивити.
9 1014957
>>4949
Чем тебе рутрекер или пиратбей не устраивают? спгпирс вообще странный в последнее время: деньги клянчат постоянно и дизайн меняют и ввели вход в акк каждый раз. Мне кажется они скоро закроются, да и файлы там старые как правило и с вирусами, модерация видимо ослабла.
10 1014984
>>4957

>Мне кажется они скоро закроются


Ну раз тебе кажется то спорить конечно бесполезно.
11 1014985
>>4984
А мы тут спорим что ли? Я просто написал, что мне кажется, что сгпирс катится куда-то не туда и всё.
12 1016273
Куда быстрее получится вкатиться чтобы с пользой - в урину на блюпринтах или юнити C#?
Усидчивость имеется.
13 1016277
>>6273
В годот.
14 1016279
>>6277
ты пидор
15 1016281
>>6273
Сначала поясни что означает

>с пользой

16 1016302
>>6281
С блюпринтов на урине в любом случае придется перекатываться в с++ рано или поздно. Плюсы охватывают все игровые движки +- в случае форсмажора. Какими бы они мерзкими порой не были...

А шарп в этом плане не такой гибкий, движков которые поддерживают так-же не очень много.
Но, с друой стороны как будто тоже достаточно работы на нём.
17 1016307
>>6273
Перекатывайся туда куда хочешь, что за тупость спрашивать что лучше то или то.
Да хоть на асамблере игры пиши если нравится (Что некоторые и делают, даже стримя на твиче).

Если удобно и нравится через принты, делай через них, если больше нравится код и все вот это, то через него.
Слушать петухов которые будут тебе задвигать за то что ты не сможешь что-то сделать если выберешь один из стулье, не надо.
18 1016314
>>6273
Вкатиться с какой целью?
19 1016315
>>6302

> Но, с друой стороны как будто тоже достаточно работы на нём.


На юнити работы намного больше, чем на анриле и других движках вместе взятых, если в россии и ближайших странах искать.
Но учти, что юнити говномобилки в основном и чтобы тебя на норм проект взяли надо несколько лет ебашить
20 1016317
>>6315

>что юнити говномобилки в основном


Но и индюков много. Правда платить они будут копейки. Но зато будет небольшая семейная команда, если нравится такой формат работы.
21 1016326
>>6307
Понял, спасибо

>>6314
Куча хотелок, которые бы хотелось реализовать.

Раньше был опыт написания аддонов/скриптов для варкрафта, но на lua, и мне тогда понравилось когда это работало как задумывалось.
Поэтому, думаю, на другом языке или движке - это не сильно отличается, хоть это и другой процесс.
22 1016340
Оказывается в VContainer можно даже шаблоны регистрировать. Ну епонцы!

builder.Register(typeof(MyClass<>), Lifetime.Transient);

И потом можно сделать инжект:
[Inject] private readonly MyClass<MyAnotherClass> _myClass;
23 1016352
>>6340
разработчики юнити строго против использования DI-контейнеров, т.к. это нарушает идеологию Unity:
https://discussions.unity.com/t/dependency-injection-in-unity-inversion-of-control-container/914827
альтернативы:
- DI как scriptable object через сериализуемые поля в инспекторе
- зависимости как синглтоны
- зависимости как сервисы через сервис аллокатор
24 1016357
>>6352

>разработчики юнити строго против


слышу вой с параши
25 1016358
>>6352

>разработчики юнити


Ну это очередной даун, который не знает как и что создают на движке, который он разрабатывает. Тем более они купили ironSource, а значит менеджеры рассчитывают на мобилки. А в мобилках ДИ - это жизненная необходимость. Без неё сложный мобильный проект не построишь, там дохера сервисов, сложный интерфейс. Или даже не мобильный, а что-нибудь сервисное, с мультиплеером например.

>scriptable object


Не заменяет ДИ. Он хорош в качестве статических настроек. Не более того.

В целом, зависит от контекста и типа проекта. В какой-нибудь сингловой ПК хуинди ДИ может быть бесполезным или даже вредным.

Хотя... Если прикинуть, то даже в инди ДИ может быть полезным. Я вот дохрена лет с юнити работаю и пришёл к выводу, что прокидывать прямые ссылки через редактор - это плохая идея. Эти ссылки могут теряться. Либо тебе нужно по иерархии спускаться в жопу, чтобы прокинуть вшивую ссылку. Не дай бой ты потом переименуешь компонент неудачно и ссылки пропадут. Плюс интерфейс нормально не прокинешь.

А через ДИ у тебя все ссылки будут в root-компоненте, который один на сцене. Ты туда все менеджеры подключил, спавнеры врагов, виндоус менеджер, ещё какую-нибудь залупу, и далее в своих компонентах ты получаешь ссылки через ДИ. А если ты работаешь с интерфейсами, ты ещё сможешь подменять легко реализацию для быстрого теста различных кейсов.
26 1016359
>>6358
в мобилках DI строго противопоказан
это тяжеловесная хуйня которая используется в банках. поэтому банки так тормозят
для производительных игр это не подходит
.webm2 Мб, webm,
720x400, 0:03
27 1016360
>>6359

>в мобилках DI строго противопоказан


Бро, в мобилках это база. Причём уже давно. Сейчас это не просто база, это базиллион баз.

Вот тебе конкретный пример. Игрушка 2016 года - Покехрен Го, с 500+ млн установок.

Они уже тогда полностью выстроили архитектуру на DI. Ещё раз - ПОЛНОСТЬЮ. Хотя тогда действительно и проблемы с производительностью были, и они использовали стрёмный Zenject (который сейчас строго не рекомендуется использовать). Короче посмотри сам, если интересно разобраться:
https://www.youtube.com/watch?v=8hru629dkRY
28 1016361
>>6359
Шиза.

var a = new A();
var b = new B(a);
Пиздец тяжеловесно. Ровно то же самое, что ты бы и через код делал.

>>6352

> разработчики юнити строго против использования DI-контейнеров


Какие? Юнити буквально вконтейнер юзают в своих репозиториях лол.

> это нарушает идеологию Unity


Кому какое дело до того что кто нарушает и какая у юнити есть идеология?(никакая)

> - DI как scriptable object через сериализуемые поля в инспекторе


Удачи рулить мердж конфликты)

> - зависимости как синглтоны


Удачи иметь несколько инстансов реализующих один интерфейс для разных областей приложения

> - зависимости как сервисы через сервис аллокатор


Если ди нарушает что там юнитевое, то почему сервис локатор не нарушает?
Сервис локатор концептуально очень схож с ди, но у него есть недостатки, если мы говорим о глобальном прокидывании зависимостей в проекте
29 1016365
>>6361

>Удачи иметь несколько инстансов реализующих один интерфейс для разных областей приложения


ты о мультиплеерной кнопке?
30 1016367

>мультиплеерная кнопка


не стоит вскрывать эту тему...
image.png272 Кб, 1569x470
31 1016368
она создала мультиплеерную кнопку...
32 1016391
>>6368
обесните что за мем
33 1016392
>>6365
>>6367
>>6368
Двачую >>6391
Пояснительную бригаду! Хочу знать мем.
34 1016402
>>6368

>она


ахахаххахахахахаха
классика
35 1016407
>>6402
у тебя даже такой нет
36 1016411
>>6407

>такой


аххахахахаха
37 1016501
Как лучше реализовать 2.5д графику с 2д-чарами в 3д-окружении? (примеры - Даркест Данжен, Cult of the Lamb, Тук Тук)
через ui Sprite в нужных кусках экрана? яерез Plane с уанимайуией? или есть еще какие-то фишки для подобного стиля?
38 1016502
>>6501

> с анимацией


быстрофикс
40 1016509
>>6507
у тебя по ссылке чисто 2д-шный проект

> This Unity URP 2D sample project showcases Unity’s 2D tools and graphics capabilities.



я спрашиваю примерно про такое:
комнаты/окружение 3д-шное, персонажи и разные объекты 2д-спрайты
в Ягненке вообще 99% содержимого "плоское", включая постройки
41 1016513
>>6501
Плейн очевидный

Сл спрайтами ебанешься с порядком отрисовки
42 1016540
>>4442 (OP)
Заебала эта параша, из-за неё у меня нормально не сохраняются сначало префабы, потом и сцена. Движок просто виснет а бесконечном поиске что сохранить, если перезапустить движок можно потерять префаб или вообще сцену.
Я уже так задрочился, что научился сохранять сцену и префабы через блокнот, но это же не нормально, что вместо стандартного сохранения я юзаю блокнот.

Искал решение - пишет проблема в самом движке, слишком длинные имена он не сохраняет.
Готов укоротить имена файлов и уммень шить путь к файлам, но проблема не знаю где именнн. Второй пик это пример имени файла.
43 1016541
>>6540
ебучий ты шиз, если ты очередной даун который пытается в Resources.Load не понимая как он работает - то это только твои пробелмы

>Движок просто виснет а бесконечном поиске


а нах ты условие для выхода не сделал?
44 1016542
>>6540
даже так все ещё лучше урины.

как только вспоминаю траву с артефактами или мыло это фирменное анрильское - сразу кулак сжимается.

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

так что терпи юнити и оно тебе воздастся
45 1016556
>>6540
У меня длиннеее имена файлов были и все норм. Попробуй обновить юнити, минорную версию
46 1016558
>>6540
Не, дело точно не в длине, у тебя там +- нормально все, вот примерно в два раза если длиннее было, можно было уже думать насчет этого.
Чтоб найти проблему прям точно - Создай пустой проект, и начни переносить вещи которые как ты думаешь конфликтуют, и найдешь траблу.
47 1016612
>>6541
Мнение хлебушка не интересно.
>>6542
тирпим карлики
>>6556
У меня шейдеры самописные боюсь заруинить всё.
>>6558
ну хоть что то.
48 1016616
>>6612

> У меня шейдеры самописные боюсь заруинить всё.


git reset напишешь в консоли

А так, от апгрейда минорной версии вообще нихуя не будет.
49 1016723
Как сделать так чтобы первый раз игра всегда запусказась в окне?
Я знаю как сделать настрйоки, чтобы пользователь мог сам себе поставить как у него будет запускаться. Но как именно чтобы по умолчанию всегда запускалась в окне, хз
image71 Кб, 1200x558
51 1016903
Мало того, что юнити застрял на 9й версии сисяпа, так функционал ещё и обрезан.
52 1016959
Я к вам со странной хуйнёй пришёл, погуглив сначала проблему в поиске, нашел несколько тредов на реддите по тому же вопросу, но никакой конкретики особо не было. Пару лет не использовал юнити, недавно скачал сразу шестерку, понадобилось в определенный момент собрать билд для проверки игры вне редактора и обнаружил что мой комп издаёт абсолютно инфернальные звуки какого-то скрежета во время того как запущен билд. Что это может быть?
53 1016961
>>6959
Проклятие юнити
54 1016963
>>6959
У тебя жесткий диск или ссд? Если юнь что то интенсивно делает с памятью, то мб головка жесткого диска шумит. Такое бывает. Скорее всего это плохо и жесткому приходит хана, но некоторые диски шумные by design и шумят с завода, так что смотреть надо.
55 1016969
>>6959

>мой комп издаёт абсолютно инфернальные звуки какого-то скрежета во время того как запущен билд. Что это может быть?


Что с кулером?Может грязь залетела
56 1016976
>>6963
>>6969
В компе из дисков только два ссд оба М2, сам комп новёхонький, даже полугода не прошло с покупки
57 1016977
>>6959
Дроссели видеокарты могут свистеть, особенно когда нет ограничения фреймрейта.
58 1016982
>>6977
Спасибо анон, скорее всего дело в этом, тк вчера на реддите видел предположение об ограничении фреймрейта, нужно будет посмотреть как у компьютера буду. Не подскажешь, это в настройках проекта смотреть или свой скрипт писать надо?
59 1016985
>>6982
в движке за много миллиардов деняк - это делается только через скрипт
Application.targetFrameRate = 60;
image60 Кб, 646x449
60 1016992
>>6985
Я бы ещё рекомендовал включить всинх в редакторе. Иначе окно Game начинает миллион фпс выдавать и видимокарту разрывает.
61 1017020
>>6977
А ну да, точняк, дроссели свистят. У меня на старой гтх 1060 свистели тоже иногда
62 1017022
У меня тоже компьютер свистит, но не только в Юнити, но и других приложениях, и это делает не видеокарта, а материнская плата. Катушки издают микровибрации и свистят. Причину так и не понял.
Вот при запущенном Хроме ничего не свистит, например.

А если не ограничивать фреймрейт в Юнити, то видеокарта просто греется и включает вентиляторы, как при обычной нагрузке. Это другое.
63 1017056
>>4442 (OP)
Unity 6 отключен в Китае!

https://80.lv/articles/unity-6-is-taken-offline-in-china/

Этот наиболее широко используемый движок для разработки игр, разработанный Unity Technologies, будет заменен локализованной версией Unity в Китае под названием 团结引擎.

У китайцев будет версия с нанитами и люменом.
64 1017058
>>7056
Видимо из-за того, что обычный юнити связан с американскими сервисами сбора данных, google play и т.п. В чайне всё это не работает.
65 1017060
>>7058

>Видимо из-за того, что обычный юнити связан с американскими сервисами сбора данных, google play и т.п. В чайне всё это не работает.


Да работает это все там. Они просто отключили именно 6 версию, что бы пользовались китайской сборкой юнити.
66 1017123
>>7056

>с нанитами и люменом


Слава богу у нас не будет этого кала. А китайцам придётся лишний раз пердолиться и выпиливать этот мусор самостоятельно, но, я думаю, они справятся, если постараются.
67 1017124
>>6540
Дело не в движке, а в ОС, полный путь от корневого каталога к файлу вместе с его именем не должен превышать 256 символов. У тебя, судя по всему, более 256 символов. Попробуй сократить кол-во папок до файла. Чтобы было не более 4. У тебя сейчас 7.
68 1017125
https://discussions.unity.com/t/clever-way-to-shuffle-a-list-t-in-one-line-of-c-code/535113
Тут пишут что использовать linq для чего либо это страшный зашквар и все тормозит, поэтому вообще нельзя его включать. Даже в сравнении с другими библиотеками.
Чего, все действительно настолько плохо?
69 1017126
>>6509
Очевидно, что окружение делается объемным с флэт-шейдерами, а персонажи, пикаблы и т.п. - это квады, на которые через шейдер накидывается кадры с атласов текстур. По такой схеме сделаны тук-тук и культ овцы.
70 1017127
>>7125
Да, линк хоть и удобная библа, но подходит только для интерпрайза. Для игр лучше использовать кастомные решения.
71 1017128
>>7125
Он просто в память срёт. Но если ты не собираешься его использовать в каждом цикле апдейта, то не вижу проблем. Тем более он уже далеко не такой плохой, какой был лет 10 назад.
image.png28 Кб, 453x667
73 1017133
>>7125

>clever way to shuffle

г5г6ш.jpg16 Кб, 499x167
74 1017156
>>4442 (OP)
Нахуя?
Это какой то комплекс?
75 1017157
>>7124
Об этом я и говорил, спасибо пчел.
76 1017158
>>7156
Еблозавр, это не выебоны, это база.
77 1017159
>>7156
Первый вариант читается в 10 раз проще.

Ещё сильнее разница, когда это скомбинировано с объявлением переменной, так как в первом случае её можно сразу же в одной строке присвоить:

Первый вариант:
Color color = path ? Color.Green : Color.White;

Второй вариант:
Color color;
if (path)
Color = Color.Green;
else
Color = Color.White;
78 1017181
>>7158
>>7159

>Color color = path ? Color.Green : Color.White;


Ебать.
Вы хоть когда-нибудь код рефакторите?
В этом случае все просто, так как переменные простые, а теперь я посмотрю как вы навернёте, когда в исполняющем блоке будут нормальные методы типа
float direction = (GameRoot.ScreenSize / 2 - Position).ToAngle() + rand.NextFloat(-MathHelper.PiOver2, MathHelper.PiOver2);
////

>читается в 10 раз проще.


direction = bounds.Contains(Position.ToPoint()) ? (GameRoot.ScreenSize / 2 - Position).ToAngle() + rand.NextFloat(-MathHelper.PiOver2, MathHelper.PiOver2) : (GameRoot.ScreenSize / 2 - Position).ToAngle() + rand.NextFloat(-MathHelper.PiOver1, MathHelper.PiOver1);
79 1017185
>>7181
Почитай книги, а то у тебя в голове насрано.
80 1017188
>>7181

> В этом случае все просто


Какой случай показал - тот и объяснил. В нём использование тернарного оператора супер правильное решение.

> так как переменные простые, а теперь я посмотрю как вы навернёте, когда в исполняющем блоке будут нормальные методы типа


> direction = bounds.Contains(Position.ToPoint()) ? (GameRoot.ScreenSize / 2 - Position).ToAngle() + rand.NextFloat(-MathHelper.PiOver2, MathHelper.PiOver2) : (GameRoot.ScreenSize / 2 - Position).ToAngle() + rand.NextFloat(-MathHelper.PiOver1, MathHelper.PiOver1);


Тут нечитаемо.
Надо ж думать всё таки, где что использовать, в некоторых местах тернарный оператор может быть менее удобным чем какой-то другой вариант, надо смотреть.

Но над этим примером стоит подумать чуть больше, чем "ыыы тут тернарный оператор не удобен", потому что тут намного больше проблем и они не с тернарным оператором.

Я бы так сделал:

bool inBounds = bounds.Contains(Position.ToPoint());

float baseAngle = (GameRoot.ScreenSize / 2 - Position).ToAngle();

float addAngleRange = inBounds ? MathHelper.PiOver2 : MathHelper.PiOver1;

direction = baseAngle + rand.NextFloat(-addAngleRange, addAngleRange);

1. Убрано дублирование кода. Дублирование никогда не должно быть.
2. Сильно уменьшена когнитивная нагрузка - каждая сущность в коде намного более простая чем исходный вариант
3. Оперируем в итоговом вычислении с понятными значениями которым присвоено имя
81 1017189
>>7126
спасибо за идею, посмотрю в эту сторону
82 1017190
>>7156
Котел писал "без выебонов" и надорвался под тяжестью бойлерплейта, недописал игру. Вот и думай.
ггд.jpg20 Кб, 480x575
83 1017191
>>7185
Тернарный условный оператор пришёл в C# из С++, потому что кому-то не хватало ифов и свичей, это я узнал как раз из книги и то что автор настоятельно рекомендовал, не пользоваться тернарными операторами. Что в последствии я понял почему.
И насчёт книг, те что приведены в шапке это я писал и почти каждую из них изучил от корки до корки. И почти каждая стоит у меня на полке.
И да скорее всего я перепутал определение рефакторинг и дебаггинг.
Как раз при рефакторинге, когда всё работают и начинают выговаривать конструкции наизнанку в угоду оптимизации, там конечно можно и повыпендриваться, чтобы потомки восхитились уровнем программистов.
84 1017195
>>7190
Это даже не без выебонов, это просто код очень слабого разраба.
85 1017197
>>7190
Котёл надорвался в первую очередь, потому что хотел откусить больше чем смог осилить.

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

А вообще кто-нибудь проверял, там вот так сильно улучшается производительность, на современных пк монстрах?
86 1017199
>>7191

>не пользоваться тернарными операторами


В нём нет ничего плохого. Можно и обычный IF написать таким образом, что нихуя непонятно будет. Максимально желательно, чтоб ни в IF, ни в тернарном операторе, не происходило никаких вычислений.
87 1017201
>>7191
85% всего пришло в C# из C++, блэт.
Это буквально

C++
++

(то есть C ++ ++, второй инкремент)
Screenshot1.jpg82 Кб, 915x739
88 1017202
Меня просто подорвало, уже несколько часов разбираю код с гитхаба у себя в студии и не видно ни конца ни края
Запись20250411223220531.mp4896 Кб, mp4,
624x628, 0:20
89 1017210
Все разобрался, держу в курсе.
90 1017211
>>7201
Не знаю какими метриками ты проценты намеряешь, есть Си которыы породил такое понятие как си-подобный синтаксис и разные языки на нём основанные.
С++ взял си-подобныц синтаксис, спиздил классы из смоллтолка и всё это натянут на базу Си.

Сишарп взял си-подобный синтаксис и напиздил идей из других языков, главным конкурентом рассматривалась жава на которую в первую очередь и ориентировались, что видно по многим синтаксическим моментам которые перккочевали из джавы, менеджед памяти, явной стандартизации разных видов "классов". Идея в общем-то и заключалась в том, чтобы сделать более современный клон джавы и не допустить её ошибок проектирования.

В дальнейшем шарп стал пиздить всякую хуйню из раста и прочих новомодных языков, и сам вводил какие-то свои фичи, преимущественно тз разряда синтаксического сахара и квалити оф лайф, не какие-то прям новые концепции.

Ввиду этого, утвреждение, что C# взял 85% всего из С++ очень странное, особенно с учетом того, что многие типичные для современных языков штуки появляютсч в С++ позже чем в шарпе(а в шарп пиздятся из других языков)
91 1017213
>>7190
На твоих скринах я лишь вижу проблемы в архитектуре, не более.
Вангую почти с 99.9% вероятностью котел бросил разработку своей игры далеко не из-за этого.
Screenshot1.jpg25 Кб, 730x352
92 1017214
>>7201

>(то есть C ++ ++, второй инкремент)


Шутку уловил, спасибо.
93 1017215
>>7197

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


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

Вся эта хуйня и вводится для упрощения читаемости, чтобы ты мог одним взглядом окинуть код и быстрее сориентироваться что происходит, куда смотреть.

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

> А вообще кто-нибудь проверял, там вот так сильно улучшается производительность, на современных пк монстрах?


От чего? От синтаксического сахара? Нисколько.
94 1017216
>>7211
этот щарит
95 1017217
>>7190

>5к строк


>false, false, 359, 540


>sc_sp


Пиздец
97 1017230
>>6985
Лучше принудительно включать вертикальную синхронизацию, у меня без нее персонаж почему то странно косоебится в стороны при движении
98 1017232
>>7210
Молодец. Патхфайдинг одна из вещей которые меня каждый раз заебывает делать, причем блядь 20 лет назад во времена универа графы я понимал лучше всего из тогдашнего курса
99 1017234
>>7232
Пчел просто ради интереса, я не в первый раз вижу тебя, ты вроде бывалый, имеешь академ образование и опыт в разработке, зачем ты сидишь на дваче? Конечно спасибо за помощь в юнити, но развне не зашкварно что-то уметь и сидеть на дваче?
100 1017250
>>7234
С каких пор сидеть на дваче зашквар и почему кому-то должно быть не поебать что кто-то там думает?
Двач очень прикольный и весёлый форум, я буду тут сидеть. И участвовать в твг.

мимо
101 1017251
>>7250
Ты прав, но с другой стороны сидеть в гд тредах и читать без игорных ебанатов которые ничего не сделали а все знают это зашквар полный. У меня все ще кошмары с рогалик тредов где люди на полном серьезе советовали изобретать колесо, вместо с того чтобы использовать уже придуманное и рабочее для простых вещей типа генерации карт.
Хуже только хабр.
102 1017252
>>7251
Ну, тут не все такие, тут есть и нормальные новички, есть и шарящие челы
103 1017253
Абсолютно согласен с этим >>7251
Сидеть здесь блядь и читать ебанатов, это пиздец как себя не уважать.
104 1017257
>>7251

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


Ебануться. Одно из самого главного в рогалике - уникальная карта, а тут советуют ассетфлипать.
105 1017258
>>7253
>>7251
Так в этом смысл двача. Приходить и самоутверждаться за счет убогих, потому что ирл всего лишь мидл и насуют за щеку реально прошареные челы.
106 1017259
>>7258
Нет.
Смысл двача порофлить, иногда что-то интересное обсудить.
107 1017260
>>7258

>самоутверждаться


Здесь все анонимы, дебил. Я даже не знаю, кто из вас срущий петух-шизик-семёнович.
108 1017262
>>7260
Моча все знает, и в конфочке смеется с протыками.
109 1017263
>>7262
Я вообще думал у нас моча это баба срака, которой вообще ничего не надо.
110 1017264
>>7263
Не, есть две мочи. Одна которая работает по репортам, особенно по всякой политоте, прибегает обычно быстро.
Вторая наша, как грится наш слоняра, который в курсе всей движухи на доске, и знает всех шизиков по железу. Догадки есть разные, но это не важно.
111 1017275
>>7264
какое ещё железо, модератор доски не видит даже полностью айпишник
112 1017276
>>7260
но срущий петух-то сам про себя всё знает
113 1017278
>>7277 (Del)

> или ты думаешь как детектятся шизы которые дергают роутер по кд??


Никак?
Я когда в дотатреде срал, меня никто не детектил
114 1017279
>>7277 (Del)
ты неправ, дуралей
сейчас зарепорчу тебя за обсуждение модерации
115 1017280
>>7279
Репорт это прямое доказательство моей правоты, ты не знаешь что ответить и просто сливаешься зовя мочуха.
116 1017281
>>7251
Заметная часть разработчиков на юнити не разбираются в программировании и не умеют толком пользоваться юнити, однако выпускают игры и даже сидят на форумах и раздают советы. Тут главное не умение, а усердие и удача.
117 1017297
>>7281
Так главное что они достигают поставленной цели и выпускают свои игры
118 1017302
Есть ли реальные кейсы использования MessagePipe в Unity? Пока кажется, что это юзлесс залупа.
119 1017304
>>7302
Ну это дефолтная реализация EventBus, можешь погуглить его юзкейсы, вроде от разрабов пасфайндера на хабре статья была.

Идея сама в том, чтобы какие-то системы могли коммуницировать между собой, не имея прямой зависимости друг от друга.

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

Например из меню стреляешь ивент старта игры. Получается меню не обязано знать, кто там как игру должен стартовать, а стартер игры не должен знать ничего про игру, следовательно и то и другое можно поместить в разные ассембли, которые будут иметь ссылку на ассембли с определениеи ивента.
120 1017305
Подскажите есть ли какой-нибудь плагин для удобной работы с UI? Условно, есть черный прямоугольник и мне нужно расположить надпись поверх него чтобы она была ровно посередине. Привык что во всяких фотошопах есть линейки, линия появляется когда располагаешь что-то по середине и прочие удобные штуки. Тут же всё как-то вслепую.
121 1017310
>>7305
Image background;
TMP_Text text;

background.color = Color.black;
background.enabled = true;
text.text = "Text";
text.enabled = true;
123 1017313
У разрабов из юнитека похоже шизофрения. Они в одном и том же классе данных используют и свойства, и просто публичные поля.
88d50d74756b0f6e355674ebb3705b87.jpg138 Кб, 780x438
124 1017314
>>4442 (OP)
нужна программа для нарезки изображения на тайлы
У меня есть высоко художественная картинка хочу разбить её на плитку и загрузить в движок. НЕ СРЕДСТВАМИ ЮНИТИ!.
125 1017320
>>7304

>но если юзать в редких случаях каких-то, то вроде норм


Вот у меня такое же ощущение сложилось. Но, зачем мне для редких случаях подключать этого монстра, если можно написать свой простой Event Bus. Наверное MessagePipe больше для корпоратов с большими проектами.

А ты переходил с UniRx на R3? Есть ли с этим проблемы? Думаю заменить UniRx на новую библиотеку от этого же автора.
126 1017325
>>7311
Да про это я в курсе, но оно не выравнивает, а просто масштабирует. Т.е. да, если я поставил надпись почти в центр, то при смене разрешения экрана она будет масштабироваться, но не будет pixel perfect выравнивания по центру как в каком-нибудь Ворде или Фотошопе.
127 1017328
>>7325
Будет. Погугли видосы или пткажи пример как у тебя не получается.

Там всё ко всему привязывается и якораями закрепляется для масштабирования
png.png308 Кб, 2560x992
128 1017333
>>7328
Ну допустим. Вот текст расположен поверх кнопки. Он прикреплен к центру и масшатабируется нормально. Могу его к правому или левому углу прикрепить и тогда будет при масшатбировании тянутся вправо или влево. Но чтобы он всегда висел над центром кнопки я должен ручками его расположить там. И мне бы какой то инструментарий типа линейки которая будет показывать ширину кнопки в пикселях чтоб я знал когда текст или любой другой элемент ровно над серединой расположен
Screenshot1.jpg28 Кб, 915x178
129 1017334
>>4442 (OP)
Господа, есть ли кто здесь разбирается в новых веениях 12й версии шарпа?

Что этот еблпн нехороший человек сделал со свичём?
1000017499.jpg133 Кб, 1220x818
130 1017336
>>7333
Вот то что тебе нужно:
131 1017337
>>7334
Паттерн матчинг, удобная штука, в актуальных версиях юнити поддерживается

иф эффект == эффект.фриз ретур нью ...
иф эффект == ...
132 1017340
>>7320
Ну почему сразу монстра, 1 такой либой больше или меньше не страшно.
Если код стриппинг включен, то и куча лишнего кода не попадет в билд.

Но а так да, простую реализацию сделать легко.

По поводу Р3 - апи во многом очень похоже на юнирх судя по тому что я видел. Сам не юзал, потому что юнирх на все хватает и каких-то особых проблем с ним нету.
133 1017343
>>7340

>код стриппинг включен


В чем различие уровня стрипинга в настройках? Мельком читал что на слабом код не ломается, а если макс сделать то может попидорасить, замечал чтонить?
134 1017345
>>7343
Макс не ставил.

Если ставить средний, то он начинает уже агрессивно вырезать код, но терпимо - например у меня вырезал конструкторы классов которые зареганы в вконтейнере, даже дефолтные конструкторы, которые сами генерируются.

Но это можно обойти - на все конструкторы классов, которые зареганы в вконтейнере, Preserve повесить, а если у класса конструктора нет - сделать пустоц и на него Preserve.

Билд сокращается ощутимо, что то типа со 100мб до 80мб на андроиде падал, например
135 1017349
>>7337
Удобно?

Вы не могли бы расшифровать, этот свич?
Я придерживаюсь одной простой концепции если код мне не понятен, я шлю его нахуй и переписываю на понятный мне код.
136 1017350
>>7343
High - даже не пытайся ставить
Medium - вроде бы всё хорошо, но насколько я помню, то что-то в Steamworks ломается и билд отправляется в помойку
Low - заебись
Screenshot2.jpg40 Кб, 866x336
137 1017351
>>7337
вот это как развернуть?
138 1017352
>>7351
Покажи имена параметров конструктора Buff. Покажу как сделать код понятнее.
Screenshot3.jpg58 Кб, 811x499
139 1017353
image116 Кб, 1386x1202
140 1017355
>>7353
Мда, тут конечно в целом надо код рефакторить. Но если без изменений, то вот так
https://pastebin.com/mGmcjfdE
141 1017359
>>7349

> Вы не могли бы расшифровать, этот свич?


Я это уже сделал.

> иф (эффект == эффект.фриз) ретурн нью ...


> иф (эффект == эффект.чтотоеще) ретурн нью



> Я придерживаюсь одной простой концепции если код мне не понятен, я шлю его нахуй и переписываю на понятный мне код.


Достаточно открыть справку по языку, или вбить его в чат гпт и попросить объяснить.

>>7351
То что ты развернул это не часть свича, это лямбда функции.

void HihiHaha(Monster monster)
{
monster.RecalculateSpeed();
}

И в место вызова лямбы вставить HihiHaha. Аналогично с остальными лямбдами.
Screenshot4.jpg48 Кб, 666x623
142 1017360
>>7355
Спасибо, и последнее это проверка на null и в случае удачи возвращает значение?

Короче как можно упростить лямбда выражение?
143 1017363
>>7360
apply: HihiHaha

HihiHaha определить как тут >>7359
image69 Кб, 943x834
144 1017368
>>7360

>Короче как можно упростить лямбда выражение?


Если хочется ещё больше раскрыть лямбду, то вот способ.
Screenshot5.jpg100 Кб, 643x984
145 1017369
>>7368
два чаю
>>7363
не работает
146 1017371
>>7345
>>7350
Спасиб за инфу, помню столкнулся из-за этого и не понимал, как это он так ломает, вроде в редакторе все ок, а компилишь и происходит какая-то залупа.

Для чего тогда нужна это настройка если она так ломает? Особено типо high? Должно же быть какоето назначение.
147 1017372
>>7371
Ну медиум норм тема, ращмер билда сильно сокращает, особенно когда у тебя в проекте куча стороннего кода, всякие там сдк есть. Просто Preserve на конструкторы повесить и скомпилится.

High хз, я даже не пробовал.
Screenshot2.jpg38 Кб, 584x296
148 1017427
>>4442 (OP)
Опять минутка ненависти.
Может я что-то не понимаю или это пример что теперь свичи могут и в иф,
но нахуя если кол-во строк тоже? А разбирал я это минут 15ть.
149 1017428
>>7427
блядь только сейчас заметил это же гавно можно записать в одну строку, ну да молодцы может когда нибудь по производительности шарп и догонит кресты
image157 Кб, 1320x1423
150 1017429
>>7427
Ты правильно чувствуешь, что код в первую очередь должен быть читаемым. У C# много возможностей и некоторые ими сильно злоупотребляют в угоду написания короткого кода.

Могу тебе сразу посоветовать всегда использовать фигурные скобки, даже если после оператора (if/for) идёт одна строка кода. С опытом понимаешь, что это повышает читабильность и уберегает от ошибок.
151 1017433
>>7427

>Нахуя


Читается легче
Нет повторения слова damage несколько раз.
Любое повторение это всегда хуйня, если есть возможность его избежать - стоит избежать. Потому что потом damage надо будет заменить на damageReceived какой нибудь, ты его скопируешь, и должен будешь все слова damage заменить, не заметишь во второй строке damage и будет пиздецовый баг.

Любое снижение когнитивной нагрузки(сколько всего надотдержать в голове) и пространмтва для ошибки по невнимателньости - это то к чему стоит стремиться.

>>7428
К производительности это никакого отношения не имеет, шарп по производительности не догонит С++. Ну, дотнетовский шарп, джобы с бёрстом могут обгонять С++.
1663622906249.png387 Кб, 778x884
152 1017438
>>7427
Ты пропускал матешу в школе?
Это буквально стандартная запись системы.
153 1017441
>>7433

>шарп по производительности не догонит С++


А какие минусы у этого есть? Ну, с одной стороны как будто сложно сделать такую игру, тем более инди, чтобы в плотную упереться в этот фактор.
С другой стороны - RE Engine, где тоже основной язык C#, но, у них свои исходники на руках.

На анриле мало кто из инди полезет ковырять движок так, чтобы впиливать свои решения основательные. Студии чаще этим занимаются, чем обычный инди-разраб. Да и не всегда команда инди это делает.

То есть, при всех плюсах/минусах истина - где-то посередине. Даже при том, что у условного анрила открытый сурс-код и плюсы.
image.png125 Кб, 400x400
154 1017442
>>7441

> истина - где-то посередине


истина в готовых ассетах и модификации уже готового под себя
image429 Кб, 1814x861
155 1017443
>>7441

>RE Engine, где тоже основной язык C#


Так вот почему епонцы так любят писать либы на C#. Интересненько...

https://www.youtube.com/watch?v=tDUY90yIC7U
156 1017445
>>7443
уде давно во всём мире и во всех нормальных школах надрачивают на C# - это самый простой, понятный и полезный язык
157 1017446
>>7445
По-моему надрачивают на Python.
158 1017448
>>7429
>код в первую очередь должен быть читаемым
Здесь наверное нас всего двое таких, будем держаться вместе.
image23 Кб, 686x386
159 1017458
160 1017475
>>7474 (Del)
Ебанутый)))
161 1017503
>>7474 (Del)
Во даун... Как таких заносит сюда
162 1017512
>>7505 (Del)
>>7506 (Del)
Чмонни Срамп
image2,4 Мб, 1024x1024
163 1017522
>>7506 (Del)
кому ты это сказал?
164 1017532
Как там, playerprefs все еще лучший способ делать ачивы?
json все еще единственный способ делать сохранения без самоубийства, но все равно близко к этому, хули юнити единственный движок без встроенного считывания и записи всей сцены
165 1017533
>>7532

>юнити единственный движок без встроенного считывания и записи всей сцены



Файлы сцены .unity это формат редактора, в рантайме этих файлов всё равно нет.
166 1017534
>>7532

>всей сцены


впервые вижу, чтобы кто-то пытался сохранять всю сцену, ты разработчик гта 6?
167 1017535
>>7532

> Как там, playerprefs все еще лучший способ делать ачивы?


Не думаю, что ачивки(как и любые важные или объёмные данные) стоит делать префсами(они хранятся в реестрее)
Лучше просто файлик в папке с игрой/в папке данных/ в облаке.

> json все еще единственный способ делать сохранения без самоубийства


Смотря каких данных.
Если объем данных большой и должен часто стримиться на диск, лучше использовать что-то без сериализации, либо быструю бинарную сериализацию(binary serializer плохой вариант, а memory pack норм)

> юнити единственный движок без встроенного считывания и записи всей сцены


Так надо
168 1017536
>>7532

>playerprefs


>json


Все кал, делаешь собственную сериализацию и все, никаких проблем. По мимо того что можешь модифицировать в любых размерах, так еще и методы защиты по типу соли добавлять, взломать такое будет не возможно.
15995286713070.png159 Кб, 470x512
169 1017537
>>7536

>не возможно

170 1017539
>>7536
Я честно не знаю в какой ситуации должно быть не похуй что кто-то может отредактировать сейвы. Ну только если игра не ммо, но даже в таком случае редактировать будут пакеты которые тебе отсылают поэтому в каком состоянии ты там хранишь сейвы похуй...
171 1017554
>>7536
Нахуя свой сериализатор если можно поксорить выхлоп и результат будет не хуже?
172 1017572
Есть примеры ситуаций когда надо лучше эвенты?
173 1017573
>>7536
В последней игре я вообще сохранял в текстовом редакторе, сначала в целях отладки, а потом просто хер забил, сейчас детишки совсем отупели они не то что-то модифицировать, они даже переписать строку в блокноте не могут.
174 1017576
>>7572
Лучше чем что?
175 1017602
У меня Мандела или раньше в юнити классы должны были называться по имени скрипта? Сейчас заметил что у меня один класс отличается от названия файла и все нормально компилируется, раньше вылазили ошибки в консоли
176 1017605
>>7576
чем просто позвать функцию и выполнить
В видео что я смотрел там говорили что пиздец как облегчает выполнение левел апов, но как по мне этот пример когда это нужно плохой
177 1017606
>>7605
если можно сделать эвент - лучше сделать
178 1017607
>>7602
Вроде было такое
179 1017613
>>7605
Ивенты надо юзать когда нужно.

Вернее, ивенты из сишарпа я бы не советовал юзать вообще, лучше UniRx сразу брать.

Можно делать условно так:

playerState.PlayerHealth.Subscribe(health => healthLabel.SetText(health));

И всё, у тебя готово отображение хп персонажа
180 1017615
>>7607
А что и когда поменялось?
181 1017621
>>7602
Стало интересно, яндекс и гугл незнают, а АИ отвечает.

В Unity3D требование, чтобы имя файла и имя публичного класса, наследуемого от MonoBehaviour, совпадали, существовало на протяжении долгого времени, так как это обеспечивало правильное связывание скриптов с игровыми объектами в редакторе. Однако начиная с Unity 2020.3 (и более поздних версий) это ограничение было частично снято благодаря улучшениям в системе скриптов и инструментах, таких как Visual Studio Tools for Unity.
Подробности:
До Unity 2020.3:
Имя файла скрипта (например, MyScript.cs) и имя класса внутри этого файла (например, public class MyScript : MonoBehaviour) должны были строго совпадать. Если они не совпадали, Unity выдавала ошибку вроде: "Can't add script component because the script class cannot be found. Make sure that there are no compile errors and that the file name and class name match".

Это было связано с тем, как Unity связывала скрипты с компонентами в редакторе.

С Unity 2020.3 и новее:
Благодаря обновлениям в Visual Studio Tools for Unity и улучшениям в обработке скриптов, Unity стала более гибкой в отношении именования. Теперь имя файла и имя класса MonoBehaviour могут не совпадать, но при этом класс должен быть корректно определён и не содержать ошибок компиляции.

Например, файл MyScriptFile.cs может содержать класс public class DifferentName : MonoBehaviour, и Unity сможет его распознать, если скрипт правильно импортирован в проект.

Однако рекомендуется придерживаться старого соглашения (совпадение имён) для удобства и совместимости, особенно при работе в команде или с устаревшими версиями Unity.

Ограничения и рекомендации:
Если в файле несколько классов, только один из них может быть публичным и наследоваться от MonoBehaviour, чтобы Unity корректно его обработала.

Вспомогательные классы (не MonoBehaviour) в том же файле должны быть размещены ниже основного класса, чтобы избежать проблем с компиляцией.

Пространства имён (namespace) иногда могут вызывать проблемы с распознаванием классов в старых версиях Unity, поэтому в таких случаях рекомендуется их избегать или проверять настройки проекта.

Если вы используете DLL-библиотеки, то имена классов внутри них также не обязаны совпадать с именем файла DLL, но они должны быть правильно импортированы в проект.

Почему это изменилось?
Обновления в инструментах разработки (например, Visual Studio Tools for Unity) улучшили интеграцию и обработку скриптов, что позволило снять некоторые строгие ограничения.

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

Практический совет:
Хотя Unity 2020.3 и новее допускают несовпадение имён, для упрощения работы и избежания потенциальных ошибок рекомендуется:
Называть файлы и классы одинаково.

Проверять отсутствие ошибок компиляции в скриптах.

Использовать последнюю версию Unity и Visual Studio Tools for Unity для максимальной совместимости.

Если вы работаете с более старыми версиями Unity (до 2020.3), обязательно соблюдайте правило совпадения имён файла и класса.

Источник: Информация основана на документации Unity и обновлениях Visual Studio Tools for Unity, в частности, исправлениях, связанных с обработкой классов MonoBehaviour (например, журнал изменений Visual Studio Tools for Unity).
181 1017621
>>7602
Стало интересно, яндекс и гугл незнают, а АИ отвечает.

В Unity3D требование, чтобы имя файла и имя публичного класса, наследуемого от MonoBehaviour, совпадали, существовало на протяжении долгого времени, так как это обеспечивало правильное связывание скриптов с игровыми объектами в редакторе. Однако начиная с Unity 2020.3 (и более поздних версий) это ограничение было частично снято благодаря улучшениям в системе скриптов и инструментах, таких как Visual Studio Tools for Unity.
Подробности:
До Unity 2020.3:
Имя файла скрипта (например, MyScript.cs) и имя класса внутри этого файла (например, public class MyScript : MonoBehaviour) должны были строго совпадать. Если они не совпадали, Unity выдавала ошибку вроде: "Can't add script component because the script class cannot be found. Make sure that there are no compile errors and that the file name and class name match".

Это было связано с тем, как Unity связывала скрипты с компонентами в редакторе.

С Unity 2020.3 и новее:
Благодаря обновлениям в Visual Studio Tools for Unity и улучшениям в обработке скриптов, Unity стала более гибкой в отношении именования. Теперь имя файла и имя класса MonoBehaviour могут не совпадать, но при этом класс должен быть корректно определён и не содержать ошибок компиляции.

Например, файл MyScriptFile.cs может содержать класс public class DifferentName : MonoBehaviour, и Unity сможет его распознать, если скрипт правильно импортирован в проект.

Однако рекомендуется придерживаться старого соглашения (совпадение имён) для удобства и совместимости, особенно при работе в команде или с устаревшими версиями Unity.

Ограничения и рекомендации:
Если в файле несколько классов, только один из них может быть публичным и наследоваться от MonoBehaviour, чтобы Unity корректно его обработала.

Вспомогательные классы (не MonoBehaviour) в том же файле должны быть размещены ниже основного класса, чтобы избежать проблем с компиляцией.

Пространства имён (namespace) иногда могут вызывать проблемы с распознаванием классов в старых версиях Unity, поэтому в таких случаях рекомендуется их избегать или проверять настройки проекта.

Если вы используете DLL-библиотеки, то имена классов внутри них также не обязаны совпадать с именем файла DLL, но они должны быть правильно импортированы в проект.

Почему это изменилось?
Обновления в инструментах разработки (например, Visual Studio Tools for Unity) улучшили интеграцию и обработку скриптов, что позволило снять некоторые строгие ограничения.

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

Практический совет:
Хотя Unity 2020.3 и новее допускают несовпадение имён, для упрощения работы и избежания потенциальных ошибок рекомендуется:
Называть файлы и классы одинаково.

Проверять отсутствие ошибок компиляции в скриптах.

Использовать последнюю версию Unity и Visual Studio Tools for Unity для максимальной совместимости.

Если вы работаете с более старыми версиями Unity (до 2020.3), обязательно соблюдайте правило совпадения имён файла и класса.

Источник: Информация основана на документации Unity и обновлениях Visual Studio Tools for Unity, в частности, исправлениях, связанных с обработкой классов MonoBehaviour (например, журнал изменений Visual Studio Tools for Unity).
182 1017623
>>7621
Надо бы западные темы глянуть потому что я последний раз до этого разрабатывал в 2022 и эта ошибка точно была
183 1017636
>>7621
Я все еще на 21, и вроде как видел в прошлом году
184 1018101
Попрос от нуфага.

Я прошёл кое какой урок по ТРИ В РЯД.

И недавн узнал, что такие простые игры типа карточные, те же 3 в ряд и коллекторы делают чисто в CONVAS.

И вопросец - а какие профиты от этого? Может там проще как-то с объектами на сцене взаимодействовать благодаря этому и код менее макаронный получается? Ну я не знаю..
Ну и какие подводные камни, т.е минусы? Если брать в качестве примера Кенди Краш какой-нибудь (да, я в курсе у них свой движок).
185 1018108
>>8101

>И недавн узнал, что такие простые игры типа карточные, те же 3 в ряд и коллекторы делают чисто в CONVAS.



А можно примеры таких игр? А то чет очень странно что бы делать всю игру в Canvas через UI.
186 1018111
>>8108
Смотрел запись собеса чела на зп 2500, он рассказывал об опыте работы, когда пришлось всю игру переносить из конвас. А до этого она так и существовала в нём. Спросил у неёронки чо знает, грит да, изи игры чисто в конвасе делают. Думайте.
187 1018116
>>8101

>всю игру в Canvas через UI.


Эм, ну 2д игру можно спокойно делать и через него, есть свои плюсы, есть и минусы.
Если говорить про архитектуру, то вопрос в том и скрипты прям на канвасе вешать или все таки отдельно иерархию геймобджектов делать?
В общем можно с определенными условиями. Зависит от потребностей и желаний.
188 1018122
>>8101
>>8111
Делал матч 3 в канвасе не по своей воле, переносить было уже поздно. Смысла в этом не вижу, только лишние проблемы когда дело касается порядка отрисовки и шейдеров.

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

По сути плюс только один и он условный(не особо нужный, потому что тут можно обойтись без канвасов вовсе без проблем) - легче сделать прямое взаимодействие ui и игры.
Например у тебя игра про составление слов, снизу есть панелька с какими-то буквами, которые ты можешь размещать на сетке перетаскиванием. Если все в канвасе - ты прям берешь букву - ведешь ее за пальцем - палец отпускают - ты её же прицепляешь на поле. Без пересоздания каких-то отдельных сущностей в виде спрайтов.

>>8116

> Если говорить про архитектуру, то вопрос в том и скрипты прям на канвасе вешать или все таки отдельно иерархию геймобджектов делать


Ну, на каком-нибудь тайле в матч 3 у тебя должен будет скрипт висеть так или иначе, в идеале просто вью без всякого лишнего.
И отдельный монобех, в который ты закидываешь контейнеры тайлов и всё что нужно.

Соответственно получив все эти данные со сцены, можно уже дальше управлять этим всем извне, всю логику писать независимо от канваса и юи элементов.

Поэтому в целом нерекомендую канвас даже для статичных игр, если их прям всерьез доделывать до релиза с заделом на дальнейшую поддержку.
Если прям простое то может и можно.
189 1018131
Есть какие-то методы/ассеты/аддоны, чтобы в юнити сделать простенькую анимацию прямо через код? а не засорять файлы animator-ами

суть в том, что у меня простенькая аркада (не вампир сюрвиворс, но похожее, не суть) и несколько десятков юнитов и предметов лута
в итоге, надо на каждого юнита делать файлы анимации типа "покачивания" и атаку в 2-3 фрейма, а подбираемые предметы (по факту - гифки, исчезающие при подборе)

есть ли способ, вместо миллиона мусорных файлов сделать что-то типа "пока юнит идет - спрайт_идет, наклон направо, наклон налево, в цикле, пока юнит атакует - спрайт_удар" а для предметов обойтись "монетка.компонент.спрайт = спрайт_монетка_анимация, зациклить"?

на ум идет только корутины с заменой sprite, но не верю, что нет какого-то готового решения
190 1018132
>>8131
есть библиотеки для твининга (tween)

будь осторожен, одна из них "в поддержку украины", т.е. там может быть вредоносный код
191 1018135
>>8131
ответ дикпика

Есть несколько эффективных способов сделать простую спрайтовую анимацию прямо через код без использования Animator:

1. Самописный Sprite Animator (рекомендуется для вашего случая):

csharp
public class SimpleSpriteAnimator : MonoBehaviour
{
public Sprite[] idleSprites;
public Sprite[] moveSprites;
public Sprite[] attackSprites;

[SerializeField] private float frameRate = 0.15f;

private SpriteRenderer _renderer;
private Coroutine _currentAnimation;

void Start()
{
_renderer = GetComponent<SpriteRenderer>();
PlayIdle();
}

public void PlayIdle() => PlayAnimation(idleSprites, true);
public void PlayMove() => PlayAnimation(moveSprites, true);
public void PlayAttack() => PlayAnimation(attackSprites, false);

private void PlayAnimation(Sprite[] frames, bool loop)
{
if(_currentAnimation != null) StopCoroutine(_currentAnimation);
_currentAnimation = StartCoroutine(Animate(frames, loop));
}

private IEnumerator Animate(Sprite[] frames, bool loop)
{
do
{
foreach (var frame in frames)
{
_renderer.sprite = frame;
yield return new WaitForSeconds(frameRate);
}
}
while (loop);
}
}
Использование: Назначьте спрайты в инспекторе и вызывайте методы для смены анимаций.

2. Time-based анимация без корутин:

csharp
public class SimpleAnimation : MonoBehaviour
{
public Sprite[] frames;
public bool loop = true;

private SpriteRenderer _renderer;
private int _currentFrame;
private float _timer;

void Start() => _renderer = GetComponent<SpriteRenderer>();

void Update()
{
_timer += Time.deltaTime;
if(_timer < 0.1f) return;

_timer = 0;
_currentFrame++;

if(_currentFrame >= frames.Length)
{
if(loop) _currentFrame = 0;
else return;
}

_renderer.sprite = frames[_currentFrame];
}
}
3. Для предметов лута (UI-версия):

csharp
public class LootItem : MonoBehaviour
{
public Sprite[] sprites;
public float animationSpeed = 0.5f;

private Image _image;
private int _index;

void Start()
{
_image = GetComponent<Image>();
InvokeRepeating(nameof(Animate), animationSpeed, animationSpeed);
}

void Animate()
{
_index = (_index + 1) % sprites.Length;
_image.sprite = sprites[_index];
}

public void Collect()
{
CancelInvoke();
Destroy(gameObject);
}
}
4. Оптимизация для множества объектов:
Создайте AnimationData ScriptableObject для переиспользования анимаций:

csharp
[CreateAssetMenu]
public class AnimationData : ScriptableObject
{
public Sprite[] frames;
public float frameDuration = 0.1f;
public bool loop = true;
}
5. Альтернативные решения:

LeanTween (ассет из Asset Store) - может анимировать любые свойства через код

DOTween - популярная библиотека для простых анимаций

Shader-based анимация - если спрайты в атласе, можно анимировать UV-сдвигом

Преимущества подхода:

Нет лишних файлов .anim и Animator Controller

Полный контроль над анимацией через код

Легко менять скорость/наборы спрайтов динамически

Можно создавать сложные паттерны анимаций программно

Экономия памяти для простых анимаций

Советы:

Храните разные анимации в отдельных папках (Sprites/Units/UnitName/Animations)

Используйте Sprite Atlas для оптимизации

Для 2D-скелетной анимации посмотрите на Unity-пакет "2D Animation"

Используйте pooling для часто воспроизводимых анимаций

Эти методы особенно хороши для procedural animation и простых циклов. Для сложных персонажей с большим количеством состояний все же стоит рассмотреть использование Animator, но для вашего случая (десятки юнитов с минимальной анимацией) кодовая реализация будет оптимальной.
191 1018135
>>8131
ответ дикпика

Есть несколько эффективных способов сделать простую спрайтовую анимацию прямо через код без использования Animator:

1. Самописный Sprite Animator (рекомендуется для вашего случая):

csharp
public class SimpleSpriteAnimator : MonoBehaviour
{
public Sprite[] idleSprites;
public Sprite[] moveSprites;
public Sprite[] attackSprites;

[SerializeField] private float frameRate = 0.15f;

private SpriteRenderer _renderer;
private Coroutine _currentAnimation;

void Start()
{
_renderer = GetComponent<SpriteRenderer>();
PlayIdle();
}

public void PlayIdle() => PlayAnimation(idleSprites, true);
public void PlayMove() => PlayAnimation(moveSprites, true);
public void PlayAttack() => PlayAnimation(attackSprites, false);

private void PlayAnimation(Sprite[] frames, bool loop)
{
if(_currentAnimation != null) StopCoroutine(_currentAnimation);
_currentAnimation = StartCoroutine(Animate(frames, loop));
}

private IEnumerator Animate(Sprite[] frames, bool loop)
{
do
{
foreach (var frame in frames)
{
_renderer.sprite = frame;
yield return new WaitForSeconds(frameRate);
}
}
while (loop);
}
}
Использование: Назначьте спрайты в инспекторе и вызывайте методы для смены анимаций.

2. Time-based анимация без корутин:

csharp
public class SimpleAnimation : MonoBehaviour
{
public Sprite[] frames;
public bool loop = true;

private SpriteRenderer _renderer;
private int _currentFrame;
private float _timer;

void Start() => _renderer = GetComponent<SpriteRenderer>();

void Update()
{
_timer += Time.deltaTime;
if(_timer < 0.1f) return;

_timer = 0;
_currentFrame++;

if(_currentFrame >= frames.Length)
{
if(loop) _currentFrame = 0;
else return;
}

_renderer.sprite = frames[_currentFrame];
}
}
3. Для предметов лута (UI-версия):

csharp
public class LootItem : MonoBehaviour
{
public Sprite[] sprites;
public float animationSpeed = 0.5f;

private Image _image;
private int _index;

void Start()
{
_image = GetComponent<Image>();
InvokeRepeating(nameof(Animate), animationSpeed, animationSpeed);
}

void Animate()
{
_index = (_index + 1) % sprites.Length;
_image.sprite = sprites[_index];
}

public void Collect()
{
CancelInvoke();
Destroy(gameObject);
}
}
4. Оптимизация для множества объектов:
Создайте AnimationData ScriptableObject для переиспользования анимаций:

csharp
[CreateAssetMenu]
public class AnimationData : ScriptableObject
{
public Sprite[] frames;
public float frameDuration = 0.1f;
public bool loop = true;
}
5. Альтернативные решения:

LeanTween (ассет из Asset Store) - может анимировать любые свойства через код

DOTween - популярная библиотека для простых анимаций

Shader-based анимация - если спрайты в атласе, можно анимировать UV-сдвигом

Преимущества подхода:

Нет лишних файлов .anim и Animator Controller

Полный контроль над анимацией через код

Легко менять скорость/наборы спрайтов динамически

Можно создавать сложные паттерны анимаций программно

Экономия памяти для простых анимаций

Советы:

Храните разные анимации в отдельных папках (Sprites/Units/UnitName/Animations)

Используйте Sprite Atlas для оптимизации

Для 2D-скелетной анимации посмотрите на Unity-пакет "2D Animation"

Используйте pooling для часто воспроизводимых анимаций

Эти методы особенно хороши для procedural animation и простых циклов. Для сложных персонажей с большим количеством состояний все же стоит рассмотреть использование Animator, но для вашего случая (десятки юнитов с минимальной анимацией) кодовая реализация будет оптимальной.
192 1018137
>>8135
ты дебил? пошёл нахуй выблядок
>>8131
https://github.com/AnnulusGames/LitMotion
193 1018140
>>8135
Пиздец

>>8131
DoTween, LitMotion
194 1018164
>>8131
Тебе не нужны никакие ассеты. Просто напиши свой скрипт, который будет переключать спрайты так, как тебе надо. Вынесешь нужные настройки в редактор.
195 1018199
Как же охуенно, только что завершил самописный менеджер диалогов со всеми фичами какие хотел, осталась малость, но я уже почти сутки не спал так что завтра или в понедельник доделаю
196 1018200
>>8137
>>8140
глянул
если по движению вопросов нет, то как в том же ЛитМошен менять спрайты? 2д-проект, нужна опция вида "зациклить спрайт с монеткой" или подобное
197 1018204
>>8200
Бро, напиши сам скрипт, под себя.
198 1018207
>>8200
Хз, но в дотвине можно сделать sequence и туда последовательно добавлять интервалы и коллбеки
199 1018209
>>8132

>будь осторожен, одна из них "в поддержку украины", т.е. там может быть вредоносный код


Я помню, что один хохло-эксплойт попал непосредственно в Unity Hub. Если он определял российский IP-адрес, то удалял все файлы на диске.
200 1018216
>>8213 (Del)
ватозависимый, чому не в окопе?
201 1018222
>>8221 (Del)
И что за хуету ты кинул? 0 пруфов, просто мусор какойто.
Я же поэтому и написал что все это пиздешь не стоящий ничего.
202 1018225
>>8222
вы репутацию себе заработали на века - не отмоетесь
203 1018226
>>8225
От мелкобуква пиздабола отмываться не надо.
204 1018227
205 1018228
>>8218 (Del)

>Не надо нести дезинформацию


Но это реальная новость. Плюс совсем недавно было нечто похожее в среде мододелов.
206 1018231
>>8227
>>8228
А почему я не сталкивался тогда, мм?? Пиздаболия это все, и ничего больше.
Если бы реально какие-то траблы были, это бы все индюки почувствовали.
3 .mp41,4 Мб, mp4,
854x480, 0:11
207 1018232
>>8231
я только щас понял, что ты тролишь
208 1018294
>>8131
Ты создаешь анимации, даешь названия, потом в коде вызываешь аниматор и запускаешь как хочешь по названию.

Ну типа
if (isKeyJump) animation.Play("jump")

Это лучше всего, но почему-то на ютубе готовы трахаться даже с деревом ради спрайтовых анимацией. Редко ведел что дергают из кода, хотя кодом задают состояния.
209 1018314
>>8294

> Ты создаешь анимации, даешь названия, потом в коде вызываешь аниматор и запускаешь как хочешь по названию.


Хорошо, как создать анимацию, не создавая файл .anim? Ну, то есть, то, что я спросил буквально первой строкой коммента, на который ты отвечал

дефолтные Animation Controller я юзал изначально, речь как раз о том, что у меня пара десятков объектов, которые из себя представляют тупо выпадающие из мобов "гифки" и на каждую пилить по файлу и animator-у уже вымораживает
210 1018317
>>8314
Я перестал тебя понимать
Ты ходишь сделать анимацию без рисовки анимации?
211 1018321
>>8314
Это делается твинами, дотвин самый норм вариант

Тут >>8294 хуета написана
212 1018330
Стоит ли отписываться от UnityEvent, если подписываешься на него вручную? Допустим, в своём MonoBehaviour, в методе Awake добавляешь подписку на OnClick. Стоит ли в Destroy сделать отписку? Даже если ты условно знаешь, что время жизни твоего MonoBehaviour и кнопки совпадают.
213 1018331
>>8330

> Стоит ли в Destroy сделать отписку?


стоит, но это всё равно бессмысленная трата одной строки, утечки в данном случае не будет
image.png104 Кб, 1197x360
214 1018364
>>8317
Я хочу сделать анимацию без создания файла .anim и, в идеале, привязки Animator Controller к каждому объекту

Вот пример картинки из интернетов
в Юнити это уже импортнется в виду sprite-multiple, нарезанное на кадры и во время игры у него нет ничего, кроме зацикленного спрайта

а таких предметов (тупо зацикленный значок монетки/бумажки/алмаза и тд) много и на каждый нужно создать .anim-файл, расставить кадры по таймлайну, настроить скорость и тд
вот и интересуюсь, есть ли способ это автоматизировать до уровня "создать_подбираемое(тип, спрайт)", чтобы в нужном месте рисовался один и тот же префаб с разными параметрами и по названию спрайта подтягивалась зацикленная анимация - а добавление новых коллектибсов в игру упростилось бы до "закинул спрайт в файлы и прописал в коде, что происходит при подборе монетки нового цвета"

>>8321
штука выше на твинах возможна? почитал про нее, на первый взгляд оно анимирует движение по координатам/траекториям, а не спрайты
215 1018367
>>8364

> штука выше на твинах возможна? почитал про нее, на первый взгляд оно анимирует движение по координатам/траекториям, а не спрайты


Да
>>8207

> в дотвине можно сделать sequence и туда последовательно добавлять интервалы и коллбеки



Ты можешь сделать монобех в который будешь перетаскивать последовательность картинок и интервал кадров и вот так это реализвать универсально
216 1018390
Хоспади исусе. Какие аниматоры, какие твины. Вы понимаете, что челу нужно просто спрайты сменять? Под это дело ещё с древних времён пишут простой класс, который содержит список спрайтов, скорость смены и нужно ли зациклить.
217 1018408
>>8390
Забей, поколение проебано.
218 1018409
>>8408
Так пиздели деды из каждого поколения, вплоть до 3000 e.d.
идиократия.mp43,7 Мб, mp4,
1280x720, 0:05
219 1018428
>>8409
Справедливое замечание. Но тут есть нюанс. Мне интересно, как будут развиваться будущие поколения, когда ИИ-чатботы станут повсеместными и дети в них будут сидеть с "пелёнок". Станут ли эти люди в разы умнее нас или же наоборот - глупее.
220 1018429
>>8409

>вплоть до 3000 e.d.


Еще скажи что земля круглая
221 1018430
>>8428

>Но тут есть нюанс.


1. Люди научились в общины.
2. Люди научились в огонь.
3. Люди научились в бронзу.
4. Люди научились в земледелие.
5. Люди научились в письменость.
6. Люди научились в электричество.
7. Люди научились в интернет.
8. Люди научились в нейроночек. <- Вы тута
9. Люди научились в генерацию любого контента по одной фантазии.
10. И т.п и т.д.

Все же не забывайте что нейроночки это буквально буст во всех областях человечества. В разное степени поршивости на данный момент, но всеже.
222 1018433
>>8408
Или просто ты лоускилл, и не понимаешь, что аниматор заебись инструмент для дизайнеров.
А подход через твин полный эквивалент твоей ебли с апдейтом
223 1018435
>>8433
Съебись отсюда дизайнер комнатный, будет мне еще про лоускилл рассказывать. Зумерки совсем охуели.
224 1018436
>>8435
Ну да, охуели. Какие минусы?
225 1018441
>>8390
Да ты еще раз прочитай зачем ему вообще это нужно, это же умора конкретная.
изображение.png43 Кб, 1891x391
226 1018505
>>4442 (OP)
анонсы, это правда? задумался об окне настроек и наткнулся на интересную мысль, как вы вообще реализуете эту жизненно необходимую фичу?
227 1018507
>>8505
Ну, да.
228 1018509
>>8507
так как сделать то тогда
229 1018510
>>8509
Пост процессинг
230 1018744
Я наверное совсем шизанулся, но не могу придумать способа сделать открывание дверей так, чтобы они при этом не отталкивали игрока. Есть идеи? Даже поставил на скачивание пару игр посмотреть как там это дело сделано.
231 1018745
>>8744
В противоположную от игрока сторону
232 1018746
>>8745
Игрок закрыл дверь за собой и при попытке открыть обратно откидывается. Или холодильник/шкаф, такие вообще внутрь не открываются
233 1018748
>>8746

> Игрок закрыл дверь за собой и при попытке открыть обратно откидывается.


Так и при открвтии обратно в противоположную сторону откроется

> Или холодильник/шкаф, такие вообще внутрь не открываются


Эти без коллайдера

Но да, тема необычная, варианты разные есть что делать
234 1018749
>>8748

> Так и при открвтии обратно в противоположную сторону откроется


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

> Эти без коллайдера


Тогда прямо через камеру пролетает, тоже некрасиво выглядит, когда вся внутрянка текстуры перед глазами проскальзывает. Надо думоть ещё.
235 1018754
>>8749

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


у камеры есть параметр один, Far что-то там, покрути его
236 1018757
>>8744
Ну так пусть отталкивает епты, хули игрок стоит на пути. Хотя конечно от игры зависит и вообще чего ты хочешь от жизни и эстетики. Можешь чекать рейкастом игрока если мешает анимации, на паузу анимацию ставить. Если без коллизий, можно шейдером дверь прозрачной делать во время клипания внутрь камеры. Можешь как в думе двери из космоса которые вверх уходят, или как в Японии внутрь стены. Или как в майнкрафте, тупо мгновенная телепортация двери в открытое состояние. Можешь катсценой отбирать управление у игрока и анимировать открывания закрывания дверей с соответствующей анимацией игрока. Вот те шесть способов из моей головы, выбирай, или епта думалку заводи.
237 1018760
>>8744
В противоположную сторону как уже сказали
Отключать коллайдер во время анимации открытия
Сам игрок будет делать шаг назад когда открыват дверь на себя(ведет к куче проблем)
238 1018764
>>8760
а ещё лучше просто стопать анимацию открытия или обратно закрывать дверь, как это сделано в играх габена
239 1018814
>>8749
Так коллайдер камеры и коллайдер игрока могут быть разными в разных слоях
240 1018939
>>4442 (OP)
Как же заебала эта параша.
Почему всё что идёт из коробки такое гавно.
Анммация, навигация, физические коллайдеры, материалы всё такое кривое?
Все книги которые я прочитал по юнити, все туториалы, все предлагают какие то кривые решения которые в реальных играх нельзя использовать.
Почему если ты хочешь сделать что то сложне платформера все начинает скатываться в индюшатину.
Причина баха анимация в навмеш агентах, я уже отказался от дерева анимаций и от переходов, у меня аниматор работает только из кода, где я могу запустить любую анимацию, но как сделать так чтобы пока одна анимация не закончилась другая не запускалась? Например как сделать так чтобы мог замахнувшийся на игрока отыгрывал сначала удар, а не срывался на пол анимации и не бежал за игроком. Я знаю есть переходы и дерево, но когда у меня больше 20и анмсаций я не могу разобраться а паутине переходов, поэтому использовал кастомное решение.
241 1018945
>>8939

>я не могу разобраться а паутине переходов



Ну это только твоя проблема, а не инструмента.
У тебя есть параметры в аниматоре. Что с ними делать сам додумай. Всё там настраивается без проблем.
242 1018950
ну конечно, на что я рассчитывал
243 1018960
>>8939

> у меня аниматор работает только из кода


> но как сделать так чтобы пока одна анимация не закончилась другая не запускалась?


В коде ждать когда закончится в чем проблема? У него есть апи чтобы всю информацию о его текущем состоянии вытащить

> Например как сделать так чтобы мог замахнувшийся на игрока отыгрывал сначала удар, а не срывался на пол анимации и не бежал за игроком


См выше

> Я знаю есть переходы и дерево, но когда у меня больше 20и анмсаций я не могу разобраться а паутине переходов,


Сабстейты, слои

Аниматор это инструмент для отображения анимаций.
Логика - это логика, за тебя её никто не напишет.
Глобально у тебя два подхода
- либо полный контроль со стороны твоего кода и использование аниматора как тупого проигрывателя анимаций -длину анимаций вписывать в конфиг(соответственно код будет четко знать сколько анимация длится без обратной связи, и подстраивать аниматор под свои нужды)
- либо использовать двустороннюю связь и смотреть в аниматоре его реальный стейт со стороны кода и реагировать на него(отключать управление пока чел замахивается)

Программирование персонажа с большим числом анимаций и разных взаимодействий - это не простая задача.
244 1019001
>>8939
Зачем ты уходил из дерева анимации и полностью переходил в код, когда блядь в стандартном аниматоре проще всего условия делать чтобы одна анимация не начиналась пока не закончилась другая

Ну и в любом случа корутины
245 1019014
>>9001

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


Ну хуй знает анон, ну хуй знает..
мимо годотя зоонаблюдаю
246 1019035
>>9014
Наместе годоти я бы вообще помолчал, если в юнити хоть есть кривой аниматор с возможностью инверсной кинематики и слоями, годотя так и осталось на уровне нулевых со своими велосипедами и самописными стейт машинами.
>>9001
Да в стороеу корутин я и думал, но я думал, что в самом аниматоре есть возможность отслеживать состояние анимации и если она проигрывается не запускать другую, я пытался сделать это через енумы.
И нет сколько лет я ебался с аниматором, ограничивая себя в колличестве анимации, теперь всё намного проще и быстрее, единственно заметил, что мобы теперь скипают по пол анимации атаки.
247 1019045
>>9035

>что в самом аниматоре есть возможность отслеживать состояние анимации и если она проигрывается не запускать другую


Есть
248 1019061
>>8939

>Например как сделать так чтобы мог замахнувшийся на игрока отыгрывал сначала удар, а не срывался на пол анимации и не бежал за игроком


А прикинь, если ты ещё решишь добавить дебаффы, которые будут снижать скорость атаки моба на 50%? И тебе придётся снижать как-то скорость анимации. Или ты решишь добавить мобу бафф "ярость", который будет его временно ускорять и тебе нужно будет вместе с тем ускорить скорость анимации бега моба.
249 1019104
>>9061
Пчел у меня есть дебафы и у мобов и у игрока, мобы не только снижают скорость, а полностью замораживаются с текущей анимацией, игрок не просто замедляет скорость, а меняет анимацию. Ярость кстати тоже есть, только по другому работает.
>>9045
Ок, буду дальше ковырять это гавно.
250 1019431
Как то скучно
Кто как делает повышение/понижение статов персонажу через рандомные действия/использование предметов?
Я ко всем книжкам и дебафф абилкам леплю лист в котором прописан айди стата и число на которое надо увеличить(уменьшить с минусом)
Может у кого лучше идеии для этого?
251 1019502
Как же я устал быть неэффективным программистом. Слишком много времени уходит на продумывание "правильной" архитектуре и на оформление "хорошего" кода. Переключить бы в голове тумблер, чтобы просто начал писать на результат.
252 1019504
>>9502
легко, становись вайб-кодером
image205 Кб, 474x402
253 1019506
>>9504

>становись вайб-кодером


Запили гайд.
image.png72 Кб, 250x328
254 1019507
>>9506
просто загоняешь ТЗ в нейронку и копипастишь без задней мысли
59857750.jpg98 Кб, 1280x720
255 1019519
ВЫШЛА! ВЫШЛА!!11

https://unity.com/ru/resources/scalable-performant-ui-uitoolkit-unity-6

Unity Technologies выпущена бесплатно 150-страничная электронная книга в формате PDF под названием "UI Toolkit for advanced Unity developer (Unity 6 edition)". Как следует из названия, эта книга довольно подробно описывает недавно выпущенный UI Toolkit. Она на английском языке.

Мы переписали нашу предыдущую электронную книгу по UI за 2021 год с нуля; это новое издание сосредоточено исключительно на функциях UI Toolkit, с новыми разделами, охватывающими возможности Unity 6, такие как привязка данных, локализация и пользовательские элементы управления.
256 1019521
>>9519
Мы в новом проекте решили остаться на старой UI-системе. Она простая и понятная. А этот UI Toolkit творение сотоны.
10.webm1,2 Мб, webm,
600x466, 0:07
257 1019524
>>9521

> for advanced Unity developer

258 1019540
>>9507
Неиронично, какие минусы?
259 1019541
>>9540

>Неиронично, какие минусы?


никаких, а тебе зачем? ты же всё равно не делаешь игру
260 1019561
>>9540
Минусов нет.
Более правильный вопрос - а какие возможности? А возможностей пока не хватает. Знаю про реальные попытки применения вайбкодинга, но даже с минимальными приложениями он толком не справляется.

А вот какие-то наброски, либо что-то очень простенькое осилит.
261 1019755
>>9431
Убивай рандом, который влияет на геймплей.

Я серьёзно, рандомизация это первый признак хренового геймдизайна, одно дело делать толковый рандом выпадения предметов, как в каком нить диабле и другое пихать рандом как в большинстве современных рогаликов.

Диды вообще даже в самых примитивных играх прошлого, несмотря на весь свой программистский скил, вообще юзали только списки и очень редко прибегали к рандому.
262 1019760
У меня вопрос к знатокам.
Вот есть эрпэгэ с кучей префабов.
Реализовал ручные пулы со списками, т.е когда нам нужен к примеру предмет или противник, чекаем пулл на наличие уже созданого, если находим то обнуляем и отдаем, если нету, то создаем с нуля из списка префабов. После нужного взаимодействия деактивируем и помещяем в пулл.
И у меня таких штук, разных типов много. Это так и должно быть?
Предметы, эффекты глобальные, противники, эффекты локальные в сражениях на мобах и персонаже, таймеры для событий. На каждый тип свой отдельный пулл.
263 1019762
>>9760
Пулов обычно много и это норма

Но, тут есть нюансы и разные подходы к арзитектуре.

Вот например у тебя по миру разбросаны разные предметы. Например кусок хлеба, меч обычный, меч стальной, и куча всего ещё, счет идет на сотни. Как тогда быть? Сотню пулов делать?
Тут придется либо делать лейзи пулы, которые изначальго пустые, и периолически их подчищать(логично, что в какой нибудь пустыне будут встречаться предсеты, которых нет в лесу, и наоборот, поэтому все зарезервированными нет смысла держать)

Либо, в пуле держать префаб "подбираемый предмет" а его сущность выделить в модель(которая будет содержать афдишник, модельку, материал, коллайдер). Соответственно когда спавним подбираемый предмет у него вызываем метод СетМодел, из которого он вытащит все нужные данные
264 1019763
>>9762

>Вот например у тебя по миру разбросаны разные предметы.


У меня локации, в каждой локации есть скрипт-список дропа (В самом списке предметы не созданы а лишь ссылки на их префабы из общего списка), пока локация не зачищена предметов как бы и не существует.
Как только должна быть выдана награда, то скрипт пробегает по предметам из дропа, потом сверяется с тем что есть у игрока в инвентаре и если там есть что-то типа зелье лечения или золото то не создает новый префаб, а просто у уже созданного предмета игрока добавлять += колличество.
А так потом чекается пулл и вытаскиваются нужные и передаются игроку, при не нахождении создаются инстансом.

Пулл предметов один. Сами предметы хранятся уже созданные по спискам типа у игрока инвентарь, или в магазине тоже список по аналогии игрока.
265 1019764
>>9763
Не, я говорил про предметы которые физически существуют в мире валяются

В инвентаре я думаю должен быть только префаб "карточка предмета", которыц отоьражает картинку и количество. Он должен быть в пуле.

Сами предметы в инвентаре должнв зарнмиться в отдельноц структуре данных, а юи ее только отображать посредством этих карточек
266 1019765
>>9764

> Сами предметы в инвентаре должнв зарнмиться


Храниться
267 1019766
>>9764
Да да, я тя понял, мы об одном и тоже говорим, так и есть по структуре как ты написал.
UI у меня отдельно, префабы отдельно, данные отдельно, все по ООП SOLID.
268 1019771
>>9762
Двачую
У меня работает так второй вариант, игрок подбирает любую хуйню, а по ади уже строится, что за хуйня и привязывается к герою если это элемент доспеха или оружие или меняет статы если бонус.
Обновить тред
« /gd/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски

Скачать тред только с превьюс превью и прикрепленными файлами

Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах.Подробнее