На Unity сделано много замечательных игр - Valheim, Genshin Impact, Subnautica, Albion Online, Endless Space, Beat Saber, Boneworks, Rust, Блицкриг 3, Pillars of Eternity, Tyranny, Kerbal Space Program и многие другие. Главным преимуществом Unity перед другими движками является его простота для одиночной разработки. Не нужно иметь целую компанию девелоперов, чтобы сделать хорошую игру. Если ты один или имеешь небольшую команду и хочешь сделать хорошую игру без претензий на ААА, то Unity станет лучшим выбором. Тем не менее, даже крупные корпорации зачастую выбирают для своих игр именно Unity.
FAQ
- Какие у Unity сильные стороны? - Простота разработки, удобный инструментарий, кроссплатформенность, богатая документация, огромное сообщество.
- Какие у Unity слабые стороны? - Сложность в создании фотореалистичной графики. Для графики "как в Crysis" рекомендуется взять другой движок. Хотя Unity вполне способен выдавать не уступающую любым другим движкам картинку, это требует определённого навыка от разработчика.
- На каких языках я могу писать скрипты для Unity? - На выбор два языка - C# и UnityScript. UnityScript - это что-то среднее между JavaScript и ActionScript. Выбирай язык по своему вкусу, они оба вполне удобны, но помни, что большинство примеров написано на C#., уже выпилили.
- Для каких жанров подходит Unity? - Для абсолютно любых! Жанр ограничивается лишь фантазией разработчика (и его умением писать скрипты, разумеется). Можно создавать и РПГ, и стратегии, и слэшеры. Можно делать VR-проекты или Minecraft-подобные песочницы.
- На каких платформах работают созданные с помощью Unity игры? - Windows, Linux, MacOS, SteamOS, Android, iOS, Windows Phone, PlayStation4, Xbox One, WebGL, Oculus Rift и многие другие. Полный список можно найти на официальном сайте. Таким образом, игры Unity работают на десктопах, на смартфонах, планшетах, приставках, в браузерах, VR-очках и некоторых других системах.
- Часто вижу скриншоты с красивой природой на Unity. Как такое создать? - Очень просто! В Unity встроены удобные инструменты для создания террейна и SpeedTree для создания деревьев и готовая реализация ветра - не нужно ничего писать или скачивать и подключать плагины - ландшафт в Unity создаётся в пару кликов.
- Что такое стартер киты? - Starter Kit - это набор скриптов и префабов, а зачастую и графических элементов для игры. Они призваны облегчить разработку игры определённого жанра и как правило разбиты по жанрам (Action-RPG Starter Kit, RTS Starter Kit, 3D Shooter Starter Kit, Space Game Starter Kit, VR Starter Kit и так далее). Также бывают стартер киты различных игровых элементов, не связанных с геймплеем (Nature Starter Kit с дополнительными природными объектами, Medieval Starter Kit со средневековыми объектами и так далее). По сути, стартер киты выполняют в разработке игры ту же роль, что и фреймворки в программировании. Однако стоит отметить, что использование геймплейного стартер кита принуждает разработчика изучать большое количество чужого кода и чужой структуры для внесения своих изменений и полноценного использования. В связи с этим большинство разработчиков предпочитает писать почти всё с нуля, получая полное понимание работы своей игры. Новичкам крайне не рекомендуется начинать знакомство с 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. Head First. Изучаем C# 4е издание Авторы: Эндрю Стиллмен, Дженнифер Грин 2. Программирование на C# для начинающих 2е части Автор: Алексей Васильев 3. C# для чайников Автор книги – Джон Пол Мюллер 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х полноценных игр на движке, обязательно нужно скачать код проектов, так как в книге он местами уже устарел.)
Я знаю это моя беда что мне лень перекатывать, но какого хуя ньюфаги делают перекат на 500, если он делается на 1к? Вот прям нарываются чтобы я сделал след перекат по красоте и с любовью.
Если это продолжиться я займусь лично тредом своего любимого движка. Не поленюсь потратить своё время чтобы всё привести в порядок.
>>850730 Если ты используешь карты нормалей для сглаженных углов, то это, или же потому что у тебя просто куб из восьми точе и нормали расположились под углом 45 градусов
>>850843 Да, восемь точек и фаски. думал чем меньше полигонов сделаю, тем лучше. Видимо, при экспорте в fbx нормали перевернулись (хотя показывает, что они обычные типа). Если я нарежу ребер на модельке, они станут по идее соответствовать же? Попробую, спс
>>850861 Ты правильно думал, но в игровой индустрии уже десятки лет используется практика запекания нормалей с хайполи модели на лоуполи игровую модель. Почитай про это.
>>850873 Так это делают для сохранения деталей вроде. Чтобы из миллиона полигонов осталось десять тысяч, а все финтифлюшки были на текстурах. Ну короче просто закину в Сабстенс Пейнтер стол, и мне выдаст автоматом Нормал мэп и свет запечется хорошо?
В общем посоны кое как со скрипом попердывая походу родилась таки система апгрейдов башен.
Хэндлер офк не будет статическим, прокину там по архитектуре норммально. он же будет хранить уровни апгрейдов и он же будет бизнес логикой для построения связи с юай и дергать датабазу он будет через конструктор офк.
>>851018 переменная - именованная область памяти. поле сдвиг в этой области относительно начала.
локальность - воопше другая концепция никак не связанная с приватностью/публичностью. локальная переменная видна только в том куске кода где объявлена(ака зона видимости) поля класса доступны всегда и везде, даже если они приватные - тут только компилятор не дает влезть в приват, но его можно наебать прямым доступом по сдвигу.
>>851075 Ну вот что ты выебываешься? То, что ты так жаждешь называть полями - это просто вид переменных, который используется в классах. Возможно, это разграничение имеет роль для тех, кто занят архитектурой и инжинирингом ЯП, но не для обычного использования. Просто усложняешь и плодишь сущности зачем-то
>>851019 > поле сдвиг в этой области относительно начала. У него тоже есть имя пчелидзе. Более того > переменная - именованная область памяти У этой именованной области памяти есть адрес, что есть сдвиг.
Ну и лан чтобы слишком сильно не рофлить держи официальное определение > Afieldis a variable of any type that is declared directly in aclassorstruct. Fields aremembersof their containing type
>>851048 Потому что разрабы си шарпа так придумали, и ввели такое понятие - поле. Просто чтобы удобнее было, потому что это тебе не С++, у нас тут есть атрибуты например, которые можно повесить на поле, но нельзя повесить на локальную переменную в функции.
>>850945 Тут отписок не хватает, лучшим способом будет метод deinit который будет отписывать, плюс булева _isInited которая не будет давать два раза заинитить, а значит подписать два раза. Если нужно будет реинит делать то тогда будешь вызывать свой deinit() в начале инита без булева isInited. >>850946 >[SerializeField] >public Двойная сериализация лишняя >GetTowerType() и GetUpgradeLevel() здесь и в других напрашивается свойство public TowerType TowerType => _effectedTower;
>>851014 Поле - это скорее не просто переменная, а переменная типа инстанса, то есть то, что вы в классе объявляете. Переменная более узкое определение.
>>851157 Я так понял, что если инициализация происходит не через конструктор, а через отдельный метод, то, если по уму, то надо в каждый публичный метод пихать проверку на инициализацию. Эм ай райт?
>>851181 "по уму" - да. ну т.е. если ты хочешь написать красивый код, который будет проверять все ошибки и правильно их обрабатывать, что бы какой-то левый юзер который будет его использовать все понимал даже не читая доков - то надо. ах да доки тоже "по уму" надо. и подробные комментарии.
"ирл" - а надо ли оно все тебе? ты знаешь что компонент надо инициализировать перед использованием знаешь где и как это происходит, ибо пишется под конкретную задачу в конкретном приложении.
>>851186 Если будет много кода и захочешь переинитить объект то словишь очень странное поведение и можешь долго искать причину. На подкорке уже срабатывает - вижу подписку ищу отписку, тем более написать отписку одной строкой дешевле чем ловить непонятное поведение в будущем. Юнитеки придумали ивенты OnEnable, OnDisable, OnDestroy - подходят для многих кейсов чтобы туда засунуть подписку/отписку.
>>851183 > а надо ли оно все тебе В высокоуровневых классах стоит добавлять проверки. Это классы которые будут работать со Steam API например, или с аналитикой, мультиплеером. А в геймплее оно конечно нахуй не нужно.
Прохожу щас туториал фотона. Имаджинирую ебальники джунов, которые себе в резюме пишут его как один из навыков. ставлю анус, после прохождения того же туториала
>>851183 > а надо ли оно все тебе? А че, так впадлу написать 3 строчки?
Ну серьезно, это написать займет 30 секунд, чего тут думать, конечно надо сделать. Даже если он сейчас пройдется по ВСЕМУ коду чтобы расставить выбрасывание исключений и проверки внутри классов чтобы сделать невозможным их использование неправильным образом - он потратит на это ну полчаса-час если я правильно прикидываю масштаб его проекта.
Зато не облысеет когда вылезут баги. Это даже не вопрос красивого кода, он просто рискует сойти с ума потом если не сделает этого.
Ебаный рот этого аниматора
Аноним17/01/23 Втр 14:26:59№85141156
Кириллы, может кто то подсказать по аниматору? Есть аниматор у которого переход из Walk u Attack построен из AnyState. Переход из Entry выведен в пустой стейт. Переход из Walk u Attack происходит по булевым флажкам.
Проблема: какого хуя между переходами анимаций аниматор все равно лезет в пустой стейт? В дебаге проверил, ситуации когда работают\выключены оба стейта не происходит
Он стоит дороже, чем обычный Фотон (на котором крутится PUN), но при этом не даёт ничего особо нового для модели мастер-клиента. Он больше заточен под выделенные сервера. А под мастер-клиента лучше учи сразу Quantum, ибо это реально ПРОРЫВ нахуй. Особенно когда они выпустят версию 3.0, в которой будет много нового.
Но проблема в том, что это чисто сетевая либа. Никакой тебе интерполяции, никакого предикшена, никакой проверки попадания с откатами (которая реализована была ещё в древней КС 20 лет назад). Ебись сам как хочешь.
Как же меня заебал ебаный сын говна Романс Акутин, я заебался эту хуйню удалять из ютуба уже. Дак мне теперь еще и с яндекса письмо пришло, запишитесь на курс Романса Сакутина у нас тут бесплатный ебана.
Если я переключу готовый проект с виндовса на андроид, он будет долго пересобираться. Но там похерится что-то? Или я смогу его обратно на виндовс переключить без потерь? Или надо делать бекап перед этим?
После забилдивания "игра" сильно нагружает видеокарту, кулер на полную вертится, 80 градусов видеокарта. Сильнее чем какая-нибудь дота. Это из-за того, что я выбрал у источников света тени и режим mixed?
>>851838 Фпс сколько? Ты можешь хоть кс 1.6 видеокарту так нагрузить - если проц вытягивает дохуя фпс и не стоит лимит на фпс(всинк тоже очевидно дает лимит на фпс)
Да и вообще больше конкретики нужно, что за видеокарта, что есть на сцене - сколько треугольников, есть ли полупрозрачность, какие рендер пайплайн и есть ли какие-то особые шейдеры?
>>851909 фпс по ощущениям 60+ Полупрозрачность есть — стандартный шейдер для стекла типа. Есть шейдеры которые импортировались с модельками, но там типа аутодеск шейдер и че еще такое, не страшное. Частицы скачал, но их в сумме 400 на всю сцену, просто снежинки летают. Треугольников хз сколько, по идее не выше среднего. Текстурки пережал. Видеокарта 3060ти
>>851919 Ну это мир сбилженный под VRchat, поэтому я не уверен, что мы говорим об одном и том же. Я грешу все-таки на свет, хотя внутри движка не нагружается так видюха
>>851924 Без разницы под что сбилжено хоть под ведро. Если сбилженая игра жрёт как не в себя гпу под 70-90%, хотя в теории и 5% не должна то я знаю что это.
>>851924 > фпс по ощущениям 60+ Ну а надо по факту, а не по ощущениям. Может оно там в 500 фпс крутится. > Есть шейдеры которые импортировались с модельками, но там типа аутодеск шейдер и че еще такое, не страшное А кто знает, может и страшное. Материалы это серьезное дело, надо знать что у тебя за материалы висят и сколько их.
>>851931 Ну а что ты готов сделать ради этого? Это примитивная херня, но без опыта и понимания долго можно копать. Если не синьерпомидор то никогда не выкопать.
>>851939 >Глобальное освещение есть? Реалтайм освещение? Дирекшнл свет и сфера с небом, которую вставляю на вкладке Lighting. Риалтаймовые 5 поинт лайтов и 2 спот лайта (ну они у меня Mixed стоят с Hard shadows) в комнатке 5х5 метров.
Ну попробую все материалы прочекать и поменять их на оптимизированные. Только после перевода проекта под андроид, свет стал запекаться странно (серый вместо черного цвета; причем запеченная ранее карта света на винвовс норм отображалась)
Чет тдшка моя разрастается. Накидал систему сохранения данных, еще + 4 скрипта. щас главное меню и переход между сценами туда сюда уже под 80 будет. К билду точно за сотку перевалит.
>>852082 Типо структура, которая хранит данные игрока, сейчас содержит два раздела. Номер последней игровой сцены и апгрейды. Данные совершенно разные для разных систем. Значит надо разбивать на два интерфейса. И пошло, поехало.
В общем как-то так. начал заполнять абстракцию конкретикой. Выглядит вроде как будто будет работать. Типа в начале каждой игровой сцены центровой скрипт будет загружать файл, вытаскивать дату. Дату поделю на 2 интерфейса, один пойдет в систему управляющую сценами, второй в апгрейды. Потом, при прохождении уровня, будет запрашивать эти данные из подсистем, упаковывать в датафайл и отправлять на запись. Осталось только понять куда засунуть подсистему апгрейдов, потому что на отдельную она явно не тянет, и оттуда уже прокидывать ее к башням.
>>852115 Переместил проверку на наличие файла из ридера в лоад метод менеджера, если файла нет менеджер запускает райтер с дефолтными статами игрока в аргументах, и возвращает их же. Запилил код для уи основного меню, код, управляющий сценой главного меню, код управляющий переключением сцен.
Осталось сделать прототип меню апгрейдов, его код и принять пару архитектурных решений как все прокинуть и скомпоновать и будет рабочий прототип игры. В принципе все наработки уже есть, думаю справлюсь.
Последнее время началась хуйня, не знаю почему, юнити скидывает протянутые в редакторе связи, чет подзаебало.
Можно ли как-то пофиксить вот эти не состыковки по цвету / свету? На мониторе и шлеме белый материал, они динамические объекты, поэтому свет на них не запекается, и освещены они глобалкой. Если я подберу цвет глобального освещения под монитор, то у меня начинает явно выделяться другой объект (за кадром). Как профессионалы геймдева решают эту задачу?
>>852453 Лампу повесь для освещения динамических объектов, одной глобалкой нормально ничего не осветишь. На лампе можно выставить на какие отдельные объекты он будет светить.
>>852453 это билт ин рендер пайплайн такой? На юрпе у меня таких проблем изначально не возникало - после запекашки всё равномерно освещено и динамический объекты не выбиваются из вида
>>852589 всё так, тебе дают калпилятор под все платформы, кое-как рабочий редактор, несколько кое-как рабочих калпанентов и несколько полезных API функций, всё остальное делоешь и думоешь сам
Люди, которые больше дрочат на код, оптимизацию, архитектуру - это просто программисты, а не игроделы, которые, конечно же, больше чем просто программисты. Им правда важен код. Даже если у них будут готовые няшные ассеты, готовое окружение - пока они не будут удовлетворены кодом, они игру так и не сделают. А почему? Ну, потому что программист - это про код, про программу в целом. Дофамин у программиста вырабатывается именно при таком положении, когда их код их целиком удовлетворяет. Они просто физически не смогут продвинуться дальше, пока их текущий код их всецело неудовлетворяет. Пока они чуют, что что-то не так/что можно сделать лучше, они и не продвинутся ни на шаг.
Они могут игру сделать быстро, если не будут рефлексировать над каждой строчкой/классом. Возможно, даже код будет не говнокодом, если хотя бы будут избегать самоповтора. Не сужу. Программисты они такие. Возможно, это работяги-программисты, а геймдев - это хобби. Либо хобби связано с программирование. У них в мозгу уже вшито правильное программирование, и есть печальный опыт еботни с кривой архитектурой. Не-программисты ебашат сразу, коряво, всрато, но идут семимильными шагами.
Все выпуки в сторону программистов в стиле кокококо вы дрочите, пока игроделы делают игры, основаны на ложном тезисе о том, что не программисты делают игры. На самом деле вы нехуя не можете сделать, кроме маленькой хуетеньки и обосретесь на первой же сложной механике, на ее расширении подлива улетит до потолка и будет капать вам на голову.
>>852594 > Люди, которые больше дрочат на код, оптимизацию, архитектуру Это три разные вещи.
1) Дроч на код ради кода. Это проблема перфекционизма. Ей страдают часть программистов. Это действительно проблема.
2) Дроч на оптимизацию. Есть игры в которых без этого никак, как в той же Факторио. Особенно это было раньше актуально. В этом нет ничего плохого.
3) Дроч на архитектуру помогает развивать игру. Если ты создаёшь пиксельную инди-хуинди, которую раз прошёл и забыл - ок. Если ты создаёшь игру-сервис или игру, которая будет развиваться, ты обязан сделать нормальную архитектуру. Тот же Нотч сделал шикарную расширяемую архитектуру в Майнкрафте, что породило много крутых модов.
>>852616 и как без кодера перекатить правила например той же дынды? ну даже урезанной допустим. там их духуя. и как потом поддерживать эту яндерелапшу. я без подъебы, мне реально интересно.
>>852636 Ну ты говоришь, что геймдизанер не сделает игру без прогера. Но в реальности он ее сделает. Геймдизайн происходит из настолок и карточных игр, а не из программизма. Поэтому базовая смысловая единица для геймдизанера это именно настолка. Простая или сложная — значения не имеет, ибо прототип собирается из листочков бумаги, потом в издательстве художники рисуют картинки, скульпторы отливают фигурки итд. Программистов тут нет (только косвенно, который софт писали для 3д и 2д принтеров, для логистических программ)
>>852636 >и как без кодера перекатить правила например той же дынды?
никак. Ну т.е. кто не брался, может и думает что сделает, но как сядет, будем несколько смущен тем фактом, что перетаскивание ссылок в редакторе не решает вопросы, а ответов в гугле об архитектуре подобной системы нет.
>>852646 ну хорошо допустим геймдизайнер сделал эту настолку на листочках. как их переводить в код? они же не сами там образуются. а что потом делать, когда правила надо будет поменять или дополнить? правила же не в граните отливаются. даже в чисто физических настолках есть ревизии разные. >>852647 вот тут реально бы подошли blueprints из анрила какой-то кривой косой можно было бы сделать, а потом передать людям которые уже шарят
>>852594 Люди, которые больше дрочат на механики, баланс, таблички - это просто геймдизайнеры, а не игроделы, которые, конечно же, больше чем просто геймдизайнеры. Им правда важны механики. Даже если у них будут готовые няшные ассеты, готовое окружение - пока они не будут удовлетворены балансом, они игру так и не сделают. А почему? Ну, потому что геймдизайнер - это про баланс, про механики в целом. Дофамин у геймдизайнера вырабатывается именно при таком положении, когда их баланс их целиком удовлетворяет. Они просто физически не смогут продвинуться дальше, пока их текущий баланс их всецело неудовлетворяет. Пока они чуют, что что-то не так/что можно сделать лучше, они и не продвинутся ни на шаг.
Они могут игру сделать быстро, если не будут рефлексировать над каждой механикой/комбо. Возможно, даже механика будет не говномеханикой, если хотя бы будут избегать самоповтора. Не сужу. Геймдизайнеры они такие. Возможно, это работяги-бухгалетеры, а геймдев - это хобби. Либо хобби связано с табличками. У них в мозгу уже вшито правильное сведение баланса, и есть печальный опыт еботни с кривой табличкой. Не-геймдизайнеры ебашат сразу, коряво, всрато, но идут семимильными шагами.
>>852659 >ну хорошо допустим геймдизайнер сделал эту настолку на листочках. как их переводить в код? Знаю довольно много не программистов, которые методом копипасты пишут скрипты для разных программ, наподобие Tabletop Simulator и прочих VTT. Ну то есть это уровень примерно как формулы в экселе писать.
>>852675 Я смог, просто это рушит все твои аргументы, ведь мир не ограничивается только видеоиграми. Самое тривиальное упражнение для гд: создать настолку как раз
>>852694 ну а тут делают компьютерные игры поэтому хош не хош а от нас макак кодерков и возможно даже полторы настоящего программиста не спрячешься братан
Чет с# ин депф не зашел. Вот такой код нахуй был в C#1, а вот такой он нахуй стал в 2.0, а вот в 3 вот добавили вот такую хуйню, смотри как стало заебись третий раз один и тот же код посмотреть.
Ща пощупаем Pro c#)))) по оглавлению выглядит балдежнее
Что случилось с ассет стором? Почему при заходе на главную страницу, память загружается на 100%, процессор загружается на 100% и греется до 60 градусов, и ни один ассет невозможно добавить в библиотеку? Они там ебанулись все?
>>852777 Хз, я не пойду пробовать посмотреть че там. уже был прецедент когда свинорылый пидарас через юнити хаб чета закидывал российским пользователям.
Не стал выебываться, читаю Про си шарп с азов так сказать. Челик говорит - создайте пустой солюшен. В солюшене через солюшен эксплорер добавьте проект консольонго приложения, а потом хуярьте в терминале вот эту хуюмбулу с пика
И вот тут нада пояснительную бригаду. а нахуя?
Я такпонимаю, что первая строчка дает имя солюшену. Збс, я его еще при создании указал. Вторая говорит, что солюшен будет на шарпе и использует дотнет5. Ну тут вроде тоже понятно, он был бланк, мы настроили. А вот смысл третьей строчки я не догоняю. Я же уже создал проект через солюшен эксплорер.
>>852797 Ну да, только он это просит делать для проекта созданного через солюшен эксплорер. я думал может там двойное дно какое-то, но походу просто теже самые действия, только через консоль.
>>852788 >Не стал выебываться, читаю Про си шарп с азов А игры делать когда? Поступай как я: гуглишь нужную механику и воруешь код из туториала, так и учишь этот говнонедоязык
Чет мне тд этот ебаный неохота доделывать до релиза. Скрипты вроде все есть, остался визуал,баланс и сцены настроить. Но типа осознание того, что никто играть в него не будет не мотивирует браться за этот большой труд вообще нихуя.
>>853023 > осознание того, что никто играть в него не будет Это правильные мысли. Я изначально решил, что буду реализовывать только популярные хайповые темы. И это сработало с первой же игрой. Жаль ребятишек, которые годами создают никому не нужное говно.
Внутри класса я юзаю _yobas и модифицирую его. Мне надо чтобы внешние классы могли получить доступ к этому списку, но не могли его менять. То что я написал - так по логике должно было бы работать, но нет. Конечно можно сконвертировать лист в ireadonlylist, но типа какого хуя я должен с этим заморачиваться, особенно мерзко когда надо в методы передавать и там лишний мусор выделять
>>853191 да похуй свои задачи выполняет и ладно я уже заебался беспокоиться обо всей этой хуите которая творится вокруг коллекций в сисярпе мне нервы дороже
Есть ли здесь кто то, кто мне доходчиво объяснил бы как работает тессеракт в коде и как превратить трехмерный мэш в четырехмерную модель? Как его ротация отображается?
>>853240 static выделяет память во время компиляции, поэтому можно создать массив с размером, записанным в статическую переменную. Но это всё какие-то нубские движения.
>>853247 На скрине нет, но я пробовал public int Points = 5; Все равно была та же самая ошибка. Либо надо инт делать статик, либо запихнуть создание массива в функцию
>>853249 Ты какую-то хуйню делаешь. Это же MonoBehaviour? Тебе вообще не нужно создавать массив. Потому что он создаётся автоматически Юнити, а количество элементов настраивается в редакторе.
>>853251 Это сериализуемое поле. Его создаёт Юнити. И Юнити задаёт кол-во элементов массива. Вообще, используй SerializeField, чтобы код нормально читался.
Карочи начал кодить днд. Сразу ясен хер начал хуярить Character, Health, Stats и тому подобные классы, но вовремя остановился и не стал их даже имплементировать дальше интерфейсов. Вовремя понял в который уже раз?, что это просто дата классы ссаные днище донное. Что методы, которые я кавалерийским наскоком хотел ебануть чарактеру вообще нихуя не его методы по SOLIDу и по совести. И что программу надо проектировать все-таки отталкиваясь от того что где с кем будет взаимодействовать, т.е. начиная с верхних уровней. В общем попробую накидать схему. Начну с продумки подсистем.
Товер дефенс анон бывший майт энд мэджик анонв будущем возможно долбоеб, наступивший на старые грабли
>>853259 Сделаю несколько простеньких игр, уровня крестики нолики. Одна будет обязательно сетевой. Добавлю в портфолио и начну долбить во все мидл вакансии.
Кстати новую вакансию на гейдевру поймал сегодня. Написала какая-то пизда, представилась сотрудником вайлдбериса, предложила лайки ставить товарам за деньги. Прямо с устра обломала карочи уебище.
>>853255 Он имеет ввиду что юнити тебе предоставит настраиваемый параметр в виде коллекции элементов в инспекторе, что как раз в концепции разработки под юнити, особенно если элементы будут Monobehaviour
>>853249 короче смотри что происходит. суть в том что на момент создания массива его размер должен быть определен. для инициализатора поля points на этот момент не существует, посему он не может его прочитать и ругается на это. более того ятп тебе надо что бы массив ресайзился через при задании количества точек - в таком варианте это происходить не будет, потому что инициализаторы отрабатывают один раз перед конструктором. более того массив уже имеет свойство которое дает его длину, хранить отдельно нет смысла в теории можно сделать через свойство типа public int Points { get => ArraySphere?.Length ?? 0; set { создание нового и копирование старого }} ||но опять же если это динамически(и регулярно) изменяемый массив то лучше юзать List<>||
НО как ужо сказали юнити уже содержит все нужно - юнити инспектор умеет и ресайзить и количество пишет. просто сделай его сериализируемым что бы увидел
>>850680 (OP) Какого хуя это ваше юнити такое тяжелое? По ссылкам из шапки начал проходить юнити эссентиалс, там был лего туториал. Вся эта шняга весит гигабайт с лишним. Потом у меня была ошибка, надо было добавить скрипт. Сука, скрипт на 10 строчек весит 300 мегабайт. Это я делал на старой лежавшей с 21 года версии. Вот сейчас обновился до последней LTS версии 2021 и этот же самый лего микрогейм у меня открывается уже минут 15 и размер папки с проектом доходит до полутора гигабайт, а таймер в unity package manager'е все увеличивается и увеличивается. Все докачалось и открылось. В итоге эта лего микрогейм весит 2.42ГБ!!! Первый маунт и блейд весил меньше гига. Третьи кресты весят всего в два раза больше. А тут блядская демка после создания билда весит 3.33ГБ. После переката на последнюю ЛТС версию кстати грузиться и тормозить стало запредельно дольше, чем на предпредыдущей версии. Какие же дауны на разработчиках я просто охуеваю. Вопрос у них там вообще об оптимизации думают нет? Я конечно видел в видео, кто у них там работает. Какой-то трап, негр, индус и две фемки. Эти про оптимизацию даже не слышали наверное
У меня там кастомный скрипт (ну вот когда создаешь например новый скрипт в контент-бравзере и перетягиваешь его потом на объект, появляется компонент для скрипта)
>>853365 Ты показываешь, что сдк2 деприкейтет, а выше написано про сдк3. Там только имя класса дается, а я про более общую вещь спрашиваю вообще
В юнити есть возможность вызывать функцию (метод) прям в редакторе, а не в рантайме? Чтобы сгенерировать объекты один раз, буду вручную навешивать этот компонент. Я сдаюсь, какая-то лютая мозгоебка с этим шарпом
Если че, я сделал вот такую колбасу, типа веревки, и она даже работает немного, но из-за того, что синхронизация не висит на сферах, у меня только нижняя видна в самой игре (потому что на ней висит синхронизация).
Она у меня появляется во время старта игры, а я хочу ее вызвать в редакторе по клику просто. Это наверное надо в консоли что-то прописать? название класса и метод?
>>853349 > Вопрос у них там вообще об оптимизации думают нет? Я конечно видел в видео, кто у них там работает. Какой-то трап, негр, индус и две фемки. Эти про оптимизацию даже не слышали наверное Ну тебе то открывшему юнити в первый раз явно виднее как там что должно быть и что сколько должно весить.
А так - ты путаешь что такое билд и проект. В проекте лежит: куча всякого неисользуемого мусора на всякий случай, несжатые текстуры, кэш чтобы все в редакторе моментально запускалось, скомпилированные шейдеры. Всё это весит много, в итоговый билд очевидно оно всё не нужно.
> Сука, скрипт на 10 строчек весит 300 мегабайт Ну тут уж просто хуйню несешь.
>>853377 >В юнити есть возможность вызывать функцию (метод) прям в редакторе, а не в рантайме? Конечно, есть, ты просто тупой петух неосилятор, ищи господина прогера себе, сам не сможешь
>>853390 Смотри сюда >>853382 эти анальные бусы я сделал для тебя. Будешь плакать и кричать, когда я засуну их тебе в дупу, а когда буду вытаскивать, ты, уебище токсичное, будешь томно охать от удовольствия и в истерике просить продолжения карнавала
>>853383 >Ну тебе то открывшему юнити в первый раз явно виднее как там что должно быть и что сколько должно весить. Не надо, но я могу сравнить с полноценной игрой и какой-то демкой, где 9 сцен и некоторое количество объектов
>А так - ты путаешь что такое билд и проект. А, вроде понял о чем ты. Тогда да, наверное хуйню сморозил
>Ну тут уж просто хуйню несешь. Я реально посмотрел сколько весит весь проект, накинул в него скрипт и посмотрел опять. Возможно за это время в тот же кэш какая-нибудь хуйня отлетела, но не могу ручаться, надо проверять еще раз, а мне уже лень
так челик с анальными бусинами не возвращайся пока не посмотришь весь гайд от спасителя нашего ромки. он сделает из тебя настоящего программиста по юнити играм. https://www.youtube.com/watch?v=w8rRhAup4kg
Могу сказать по своим примерам - у нас проекты от 4 до 20 гб где-то весят, просто потому что туда сваливаются тонны ассетов из стора. А итоговый билд в районе 100мб выходит.
Пытаюсь сделать чтобы тело отлетало от взрыва по физике.
Как сделоть чтобы объект отлетал от другого объекта по X и Z, но не по Y. Т.е. я передаю во врага трансформ взрыва, а дальше что надо вписать в AddForce чтобы он отлетел так, как я хочу?
>>853617 Да там вроде можно работать как со старой даже, только вместо input используется девай. Но оно конечно нахуй не надо, когда ты жмешь два клика мышкой, а тебе выдает уже готовые 3дэкшон биндинги причем на 3 вида девайсов сразу.
юнитач, а никто не задумывался как впилить более новую версию языка в эдитор? вот допустим если я в VS делаю проект с нужным таргетом и потом скомпилированный длл пихаю в /plugins - все работает как часы а вот если я пытаюсь какие-то фишки из нового языка уже в эдиторе пилить - хуй, ругается оно гвоздями прибито или есть варианты?
>>853849 так в том и дело что я не на последней версии юнити сижу. все вкусное начинается где-то с 19-20, а у меня ниже. каждый раз приходится либо переписывать либо компилить вне
>>853864 Все "фишки" это синтаксический сахар, вместо которого на старой юнити писать надо на пару строчек больше, только и всего. Не припомню киллер фич шарпа без которых на старых юнитях писать совсем тяжко.
>>853875 я об этом и говорю т.к. моя версия старой юнити это 5.3.5 и либы которые я переодически тягаю с гитхаба с более новых версий - все лицо в сахарке, весь лог в ошибках. переходить на новую версию не могу потому и ищу наизжопный хак
Заебала привычка кодить сразу всю хуйню. Вроде начал понемногу разгребать архитектуру проекта, накидал слои, настроил инпуты, выделил из них интерфейс на передачу значений в мувинг систему , прокинул его в нее. Ну остановить тут дебилушка! Нет, нихуя. пошло нахуй еулер ротейшен мувмент хуювмент мувспид тайм дельта тайм. ебаный икебастос.
Какими средствами лога и дебага вы используете? Я бы хотел, например, чтобы прямо на экране отображались значения нужных мне переменных из определенного класса. Например, в классе LohMonobehaviour есть private float pidr, и я бы хотел ее мониторить прямо на экране в игре в runtime. Также, когда переменная меняет значение, я бы хотел, чтобы она например подсветилась временно, чтобы я заметил. Есть готовые решения с кучей полезных прибамбасов? Вроде можно отобразить все все поля в инспекторе, но мне я бы хотелось чтобы именно на экране, чтобы сразу все было видно
Зы: я тут подумал, что GUI.label("loh:"+loh) вполне подойдёт.
>>853835 задумывались во времена юнити 5.0/5.1 когда уже готовился 6й (или 7й?) шарп а юнити толком в 4й не умело. была ебля с подменой компилятора(тут фишка в том что шарп коспилируется во внутренний язык дотнета а он обновляется очень редко, обновления шарпа - синтакс, библиотеки и допиливание компилятора на il никак не влияет, а юнити работает уже по сути с этим языком передавая его дотнету или ил2срр или еще чему под конкретную платформу) можешь попытатся побыть некромантом и впендюрить https://libraries.io/github/iamchenxin/CShape6_Unity3D если совсем все плохо.
с 20хх версий это ушло нахер и юнити без проблем использует(и более того требует для новых фич) компилятор вижуал студии
>>853973 > Ну остановить тут дебилушка! Как же я тебя понимаю. Устал себя хуесосить за это. Когда ловлю себя на мысли, что уже не решаю конкретные задачи, а просто дрочу код ради кода, то хочется разъебать пк.
>>850680 (OP) Сап, расскажите про TextMeshPro. Я "интегрировал" гит в юнити, а из-за этого ТМР у меня проект отображается будто написан на ШейдерЛабе, тк там дохуя файлов связанно с ТМР. Как мне избавиться от этой хуйни? Перевести все в текст? Так текст в юнити галимый. Или дальше страдать?
>>853258 Велик соблазн делать через классы. Но на самом деле днд это ecs. Но делать ее не советую. Там сейчас бурления говен с лицензией. Лучше делать свои механики и геймплей.
В общем аноны, тут нужен консилиум карочи. Есть такая ебала. В чем суть. Инвентарь чисто данные, коллекция неких itemKeys и методы на добавление и удаление предметов. Я жму кнопку АЙ, контроллер просыпается и пинает инвентарь - дай список!! инвентарь дает список. Контроллер обращается в класс, отвечающий за данные предметов в игре и просит по ключу предоставить данные, дальше эти данные летят в UIcontroller, который уже разбирается кому их конкретно просунуть.
>>854241 Зачем тебе дополнительные слои абстракции? Просто сделай класс инвентарь и пускай с ним работает и UI, и персонаж. Внутри него будут ссылки на объекты, которые содержат всю инфу о предмете. В пустых слотах будет просто null ссылка. Если нужно пройтись по всем предметам и что-то подсчитать, сделай это через сам инвентарь.
>>850680 (OP) Почему ты ещё не бросил геймдев? В нем же одни минусы: 1. Ты портишь зрение. 2. Ты портишь осанку. 3. Ты утомляешься, психуешь, бугуртишь в этих проклятых циферках. 4. Все было легко и классно, когда ты был новичком. Когда чуть стал постарше, ты понял, какие умственные напряги нужны чтобы писать нормальный код, чтобы не спотыкаться, не тормозить, не переписывать и при этом легко править и добавлять новые фичи. 5. И самое главное - осознавать, а ради чего это все? Если ты развил свой ум, а в программировании это все же естественно,то ты понимаешь, что не сможешь создать игру, которая всем понравится. Ты правда считаешь, что можешь изобрести новый интересный геймплей/сюжет/графон? Ты можешь сделать только очередной клон. Все эти твои усилия - ради очередного клона? Ты такой взрослый, но надеешься как девочка, что произойдет чудо и ты вдруг заработаешь неплохо. Чтобы сделать такую игру, пусть это и будет всратый клон, нужно ещё больше усилий, маркетинг, попсовый графон и вау музыка и эффекты.
А может ты оправдываешь себя тем, что твой опыт позволит тебе устроится на работу в заветный геймдев? Ок, это возможно. Но в 99% ты будешь делать раковые игры для деточек. Ведь твой босс будет хотеть лишь заработать денег, и поэтому ты будешь как конвейер клепать то, что заходит современным школьникам. Лучше в офисе бумажки перебирать, ей богу, тот же онанизм, но без умственных напрягов.
Я скажу тебе, когда стоит быть в gd. Когда у тебя есть единомышленники и у вас у всех есть идея игры, которая привнесет что-то новое, которая захватит сердца и потрясёт ум игрока. Когда вы по настоящему одержимы идеей и готовы идти до конца. Вот, он истинный геймдев. Все остальное рак, духота, дроч.
Вот что тебе не хватает. Именно в твоём подсознании мучает тебя - ты делаешь не то, ты делаешь зря, у тебя нет идеи и смысла.
Серьезно, лучше научись делать что-то практичное и полезное. Лучше бы учился готовить, или делать деревянные вещи, или чинить технику.
Бросай геймдев. Освободи гигантское количество умственной энергии и свободного времени.
>>854103 В гитхабе, там показывает прямо какой язык преобладает в проекте. И из-за ТМР там шейдерлаб этот ебучий. А тк я в шарпе практикуюсь я хочу чтобы проект и отображался шарповым
Я видел что в vs как-то делают так, что при кодинге вылазят подсказки от юнити, типа какие встроенные методы, переменные, типы есть. А это как-то можно включить в vs code?
ЕЦСбоги здесь? как вы работаете с иерархией? допустимо ли чтобы в компоненте был например лист из других компонентов, а система бы потом брала этот лист и по нему работала?
Можно ли на Android использовать файлы для сохранения прогресса игрока? Или лучше PlayerPrefs? Просто слышал, что могут возникать проблемы с файлами (могут всплывать разрешения или срабатывать ошибки).
>>854408 ну ва первых лист там быть не могет в принципе. динамикбуффер имеет ограниченный размер и тут нада балансировать между ожидаемой максимальной вместимостью и производительностью. ну и очень хуево паралелится на запись если нужно прям МНОГО энтитей то лучше уж сделать лукап или формировать что-то типа нативхешмепа предварительно
>>854474 Вот тут пацаны карочи тоже есть вопросы. Например - группа хранит список персонажей, добавляет и удаляет. Мне кажется это норм класс, он делает свое дело. Селектор принимает инпуты с хоткеев или щелчок по иконке персонажа в гуи и вот тут у меня сомнения. Получается, что это по сути контроллер, и вроде как он не должен хранить данные. но мне надо сохранить где-то индекс текущего персонажа. Такое ощущение, что мне нужен еще один класс, который будет хранить этот индекс и содержать в себе эвенты завязанные на изменение выбранного персонажа.
А еще лучше, это класс может хранить в себе уже не индекс, а ссылку на персонажа и его уже все кому надо могут раздергивать на интерфейсы. мне кажется так вполне даже заебись.
Еще есть вопросы по селектору. Он по уму не должен знать об устройстве группы. Он должен ей просто систнуть, типа эй, сюда дай персонажа под индексом 6. А в группе их всего три. Она должна сама обработать эту проблему, выдать ему например последнего доступного и селектор уже его переправляет в класс, который непосрдественно дает доступ к интерфейсам персонажа.
>>854475 мой короче конкретный юзкейс, я хочу попробовать ецс у меня сейчас все работает на старом подходе родительский объект-сплайн, у него контрольные точки - трансформы, разнообразные проперти-настройки к сплайну цепляются другие объекты и по его t высчитывают свою матрицу(ездят по сплайну) как это дело на ецс перетащить?
>>854494 я ж говорю попробовать хочу. сначала посмотреть как это работает на примере одной задачи и если допру то уже все остальное переводить буду у меня проблема что я тупо не могу понять как это ецс вообще работает
в unity можно сделать несколько environment lighting color? я нашел только в настройках света, где цвет глобалки на всю сцену задается, а через создание коллайдеров или волюметриков каких-то можно сделать отдельные участки сцены с другим глобальным цветом?
Господа гдачеры. Работа идет, а значит появляются вопросы.
Карочи смотрите, класс отвечающий за хранение данных о группе игрока. Хранит список персонажей, имеет публичный интерфейс для его изменения. Ок. заебись.
Мне надо сделать классическую так сказать панель с портретами, при клике на который выбирается персонаж. Я кавалерийским наскоком делаю контроллер, связываю в нем UI и PlayerGroup и они начинают типа взаимодействовать. Делаю в группе эвент, который в случае изменения состава группы пошлет в контроллер новый состав, контроллер его декомпозирует на портреты и прочую хуйню и скормит в UI.
Но тут я понимаю, что это ебись оно конем просто пизденейшее нарушение инкапсуляции, настолько хуевое, что граничит с зашкваром.
А че делать? Как разрулить?
Какие варианты у меня есть:
1) Сделать структуру, которая будет контейнером нужных данных - портрет, хп, имя и так далее. В конструктор этой структуре скармливается персонаж, она из него дерграет че надо, и уже в контроллер мы передает список структур, а не персонажей. А в группу добавляем нужный метод, который будет эти стрeктуры делать и отправлять.
С одной стороны, мы вроде защищаем данные группы, с другой стороны и не сильно ее напрягаем, потому что она не занимается там какой-то декомпозицией, не лезет внутрь персонажей, за нее это делает структура.
>>854580 > и уже в контроллер мы передает список структур, а не персонажей Чел, это шиза из энтерпрайза. Там это актуально. Не пытайся затащить это в геймдев, иначе шизофрения и седина на волосах тебе обеспечены. Допустим, ещё момент - ты посылаешь список, А ВЕДЬ Я МОГУ ЕГО ИЗМЕНИТЬ ХИ-ХИ-ХИ!!!!
Короче, смотри: 1) Не нужно кидать список в ивент. Просто сообщи, что произошли изменения. Далее UI или класс-посредник самостоятельно через свойство прочитает обновлённый список. Единственное, можно ещё добавить ивенты CharacterAdded(ссылка на char), CharacterRemoved(ссылка на char).
2) Как я уже сказал, лучше вынести список в свойство. Либо сделай из PlayerGroup полноценную коллекцию, реализовав ICollection или IEnumerable. Тогда невозможно будет изменить список извне, но вопрос - а нахуй всё это нужно, если это к геймдеву не относится никак.
3) Хранить можешь интерфейсы, а не сам Character. Например ICharacterInfo. Какой в этом смысл? Так ты сможешь протестировать интерфейс накидав тестовых чарактеров без какой-либо логики. При этом свойства будут ReadOnly - твоя любимая инкапсуляция.
4) В константе нет смысла указывать чарактеров во множественном числе, так как ты уже написал COUNT. Типа characterCount, characterList - правильнее без s.
В общем сделал без заебов. чиста по геймдевовски, без интрефейсов там хуесов. Слой ниже контролирует уже непосредственно gui персонажа - портрет, хп бар, и прочую залупу, отписки подписки на эвенты.
>>850680 (OP) Бля, где найти РАБоту/команду? Я сам кодер, у меня опыт даже коммерческой разработки есть. На гитхабе три игры, в итче правда одну только выложил. Английский знаю. Вакансии смотрю - уже даже не от мидла а от сеньора и выше. Где хотя бы мидловские поискать? Ну или на крайний случай адекватную команду найти, может на реддите чего есть? Интересует именно юнити
чем дальше я забуриваюсь в это ваше ецс тем меньше понимаю что творится вот решил посмотреть а как игоры-то делают на примере популярного фреймворка (leoecs lite) ведь лучший способ разобраться кмк взять уже то что работает и покрутить его в руках https://github.com/supremestranger/3D-Platformer-Lite/blob/main/Assets/Scripts/Systems/PlayerMoveSystem.cs он короче в этой системе и вообще в системах берет фильтрует компоненты для своей системы и прогоняет систему по ним и так все системы каждый тик апдейта получается что ецс настолько быстра что кешировать не надо ничего? я не пони
Переосмыслил дншнего персонажа. Карочи он вообще не должен предоставлять никакой информации кроме вот прям базы типа класса, уровня и так далее. Все расчеты должны осуществлять статические сервисы на основе данных от персонажа. И походу я нащупал решение с работой эффектов и оно оказалось максимально прям пиздец простое. Тупа нахуй все эффекты являются или наследуют от одного класса, чтобы их можно было забить все в одну коллекцию, которая храниться у персонажа или в каком-то классе, который будет еще и тайминги обрабатывать, но суть не в этом, а в том, что все эффекты через интерфейс разбиваются на типы. И когда, например, сервис по расчету атаки производит расчет он просто прогоняет поиск этой коллекции и ищет нужный интерфейс и все.
Типа надел меч +1. Разбиваем его на два интерфейса Iattackbonusprovider и idamagebonusprovider и все нахуй. И его обработает и сервис по подсчету урона и по подсчету атаки все это отдельно и еще и прологировать как-то можно поотдельности.
>>855023 Очевидно он на полпути, так как у него уже: >сервис по расчету атаки производит расчет он просто прогоняет поиск этой коллекции и ищет нужный интерфейс и все. Осталось всего-то заменить интерфейс->компонент и сервис->система.
>>854504 ну поехали. ва первых иерархия трансформов в ецс уже есть. можешь тупо го построить в иерархию и они так и конвертнутся или сделать вручную. нужно по минимуму на обооих энтитях LocalTransform, LocalToWorld и на дите Parent. система инициализации добавит(если нужно) DinamicBuffer<Childs> на парента, LocalToParent и PrevParent(для отслеживания смены родителя) на дитё если нужно. далее связанный объект будет следовать за главным повторяя его движения, учитывая вращение и скейл как обычно. конкретно это делается в SumulationSystemGroup -> TransformSystemGroup -> ParentSystem соответственно все движения объектов желательно проводить до неё, что бы правильно обновились все связанные объекты и пересчитались координаты, а читать данные - после.
дополнительно есть DynamicBuffer<LinkedEntityGroup> который вроде как отвечает за уничтожение связанных объектов при уничтожении главного, но заставить его работать я не смог. почему то первый и последний в списке не учнитожались. в доках ничего не нашел, написал свою реализацию.
конкретных подходов несколько. 1. самое простое, для случая если измения происходят постоянно в паренте и детях - парент считает общий кусок и ложит в свой комонент(в иерархии это например трансформ). дети через компонентлукап достают с парента это значение и считают что-то свое(т.е. свой трансофрм) на его основе.
2. парент имеет какой-то "большой" неизменный кусок данных(и соответственно хранить его в каждом дите кагбы и невыгодно) дети считают все сами. например тот же сплайн общий для всех детей а позицию на нем они считают по каким-то своим данным. BlobAssetsReference - единожды создается сплайн а детям выдается ссылка на него(собственно именно на сплайне или пути обычно примеры с ним и построены)
3. есть еще "средний" вариант с шаред компонентом, но это очень специфичный случай и требует точного понимание что происходит. суть - этот компонент один на чанк, общий для всех его энтитей. но изменять его дорого и муторно, посему нельзя просто так. он обычно используется для объединения однотипных энтитей по какому-то признаку
>>854966 ты пропустил четвертый основной концепт ЭКС, который в название не вошел - запросы(фильтры в терминах лео). заметь что фильтры должны быть объявлены в системах как поля и не создаются на ходу по необходимости(в дотс вроде бы создаются, но стоит открыть автогенерированые исходники и там видно что это наебка - запросы создаются статично, "за кадром", а "динамические" просто их берут). вот на это и ложится большой кусок оптимизации - правильно рассортировать энтити по запросам что бы системы получили именно то что нужно а не лазили по ВСЕМ энтитям в поисках нужных
>>850680 (OP) Бля, подскажите пожалуйста, в юнити есть менее ебанутый способ скрывать/включать отображение UI кроме как оборачивать все в канвас и через GetComponentsInChildren с предварительным пропуском parent-объекта их обрабатывать?
Ну просто это даже звучит дегенеративно, однако гуглеж других способов как не получить при этом NULL Reference exception не подсказал Может вы подскажете...
>>855150 Ну самое очевидное - делаешь синглтон, UIManager какой, которому в общем случае говоришь какую менюшку показывать и все такое. у него всегда есть(должны быть иначе он работать не могет) ссылка на корневой канвас и он соответственно может его безболезнено скрывать/показывать целиком. упрощая до минимума - синглтон с ссылкой на корневой канвас, а там уже делай що хочешь
>>855162 так значит смотри. делаешь синглтон гуйменеджер вида public class UIManager : Singleton<UIManager> { public Panel GameOverPanel; public Panel MainMenuPanel; public Panel SomeOtherGUI1; ....
public void GameOver() { HideAll(); GameOverPanel.GameObject.SetActive(true); } }
вешаешь его на основной канвас. назначешь все вложенные менюшки по соответвующим панелям, все отключаешь и включаешь нужные методами типа GameOver() вполне стандартный способ. как продвинутый вариант - хранишь эти менюшки как префабы создавая по необходимости
>>855162 есть причина зачем их искать через таг? можно поля либо публичными либо сериализированными сделать, перетащить в эдиторе нужные элементы и жить не тужить
>>855168 Я тут вообще пытаюсь некое подобие солида и в целом "эффективной" разработки сделать, а везде пишут что паблик это хуетень, и Find тоже так что лучше сериалайз и поиск по тагу, мол так безопаснее и быстрее
>>855172 Бля, а ведь реально, тут сериалайз можно, чет я затупил. Я просто вообще думал чтобы в GUI не настраивать нихуя все тегами пометить и к ним доступ иметь
>>855169 мне тупо было лень писать сериалайз филд перед каждой панелью, но по хорошему надо. файнд же юзать следует в очень редкому случаю - какой-то ну прям очень нестандартный путь исполнения, где действительно надо перебирать все что есть что бы найти кто тебе нужен. т.е. все пошло не так как задумывалось и ты пытаешься правильно обработать ошибку
>>855177 делаешь префабы всех компонентов UI, на старте сцены кор игровой скрипт инициализирует UI, тот подгружает их из ресурсов в приватные переменные. Если тебе прям пиздец приватность надо. Но приватность не приватность по-большому счету к солиду мало относится вообще.
>>855179 Я насчет солида просто пытаюсь каждой фиче свой класс выделять и примерно одни функции туда пихать. Типа игроку свой класс, там только управление игроком, препятствиям свой класс, зоне увеличения очков свой класс и тд. Такой вот солид на минималках
>>855248 Этот чел приблизительно с таким заходом мне за 2 часа до нового года писал, типа тоже у него на 2 часа работы, либо щас делай либо в 9 утра вставай 1 января)))
Походу зря на пацаны наговорил, что он лжец и обманщик. Этот набор моделей на артстейшоне есть. Чиста крутится геймдевелопер, вкладывает бабки в разработку
Давно юнити не трогал, скачал свеженькую и тут это. Что за залупа? Перед отправкой поигрался с окнами и узнал что глитч убирается, если сменить размер любого блока хоть на пиксель. Все равно кину.
Подскажите пожалуйста, а если я начну вкатываться в юнити насколько там трудно будет работать с партиклами? Вернее где их придётся делать? Спрашиваю заранее потому что в игре моей мечты у персонажа и мобов будут скилы. Ну частично магия. По задумке анимация скилов будет не сложнее чем в вове. Ну и частично эффекты оружия / брони.
>>855317 >>855333 Это другой человек ответил. Я тоже не миллионер, но у меня свои задумки по эффектам. В игре будет выдуманный язык, а спеллы будут использовать комбинацию рун оттуда, они будут появляться над головой/руками персонажа, и потом будет идти основная анимация умения.
Бля, кто нибудь может объяснить как работать с канвасами? Я когда запихиваю туда объекты, то система координат меняется просто по каким-то неведомым мне законам. Дошло до того что у меня два объекта в одном канвасе имели координаты 0 0 0 и при этом находились в разных местах. Причем я привязку канваса сделал сначала к камере, а потом просто к глобальным координатам. А канвасы внутри канваса мне даже не дает настроить.
Я просто пытаюсь реализовать менеджера объектов, чтобы не создавать кучу сцен, а сделать все в одной - разбил объекты на канвасы которые олицетворяют определенную игровую сцену и их все закинул в "менеджер" канвасов
>>855352 там суть в том что координаты зависят от анчора/пивота/стретча. т.е. начальная точка. в какую сторону от неё считать координаты и как их считать относительно анкора
задается кликанием по квадратикам с зажатым альт/шифт/контролом. там в принципе все довольно интуитивно(я даже не запоминаю какой шифт за что отвечает) - поискперементируй.
>>855357 >>855356 Работал с ними, от центра все сделал - полная хуйня, ничего особо не изменилось. С 0 0 0 координатами у меня был один объект и один префаб, может в этом дело?
И еще один вопрос. Тут есть люди с LTSC версией винды? У вас юнити стабильно работает или он с этой версией системы не совсем совместим/нужно ставить что то еще?
>>855426 >Ну, если нету желания сидеть афк ждать пока оно прогрузится долго у меня они на м2 и все равно грузятся по 300 лет старые юники так не грузились даже на ждд
Как и предполагалось, первой болью в моем днд приключении будет кодинг боя. Даже его поверхностная часть. На первом этапе ввел классы Combat, хотя наверное правильнее Battle, и класc Round. Согласно правилам, последний считается законченным, когда сходит последний участник. Соответственно чем он занимается приблизительно можно понять. По ниточке оттуда отсюда надеюсь клубок этот растащить.
Отдельную боль доставляет тот момент, что надо тоже самое имплементировать еще и реалтайм режиме. Во-первых, потому что наложенные заклинания должны как-то обсчитываться, во вторых я планирую походовую и реалтайм систему боя. Типа как в меджике.
В плане создания нпс пока не придумал ничего другого, кроме как сделать монобех - NPC, это контейнер, который будет в себе содержать тот же Character класс, что и мои персонажи и походу набор бихевиор скриптов типа диалог, мувинг, хуювинг со стейт машиной под стратегию. хз.
>>855471 Была еще проблема, типа я накидал общую идею и пару конкретизирующих строк, и наткнулся на такой момент. Как определить, что бой окончен? Все участвующие в бою являются одним классом с одним набором данных. Т.е. я не могу их отсортировать. Вводить в класс Character какой-то флаг - нпс не нпс, ну это слабенькое решение. И тут пришла в голову идея, что бой должны начинать отряды, тут соответственно достаточно легко понять идет бой или нет. Сразу встала проблема, как формировать отряды. Наверное придется таки вводить какие-метки, типо отношение к игроку и засовывать это все в нпс контейнер.
Разобрался с установкой, проверил что работает. Появились другие вопросы. Из неоднозначного: не нашел доступа в ассет стор. Как правильно им пользоваться? В самом движке будет окно с ним и выбором ассетов, или же это в браузере делать надо?
Второе что хотел узнать - раньше в тредах по юнити писали, что есть инструмент (видимо в ассет сторе) который добавляет доступный визуал скриптинг. Везде упоминали одно и тоже название этого инструмента (плагина).
И третье - с чего начать? Может есть ютуб канал/курсы которые в уроках трогают самое необходимое для нуба? Когда я изучал майю, то в курсах videosmile прямо выжимку дали, что я без проблем мог уходить уже в английские туториалы.
>>855500 через браузер покупаешь или добавляешь бесплатные ассеты в сторе после чего в пакет менеджере - мои ассетсы - добавляешь их в игру
болт выкуплен юнитеками и входит в стандартные ассеты(пакет менеджер - юнити регистр) под названием visual scripting. не помню установлен ли по дефолту
>>855544 Хз. Судя по гитхабу она джуниорский джун. В коде чувствует себя очень неуверенно. Не представляю, чем она занималась 3 года в команде. Приносила кофе красноглазикам?
>>855550 Это видимо тот долбоеб, который пару дней назад прибегал со скрином с ньюсача о том, что у кого-то стим не грузанулся и полилася перемога лол.
Конченный хуесос настолько тупой, что пытается напиздеть там, где каждый может проверить нажал одну кнопку лол.
>>855603 Импортировал. Все сцены с ошибками. Гора чужого кода. В мейн меню на камере весит анкноун скрипт. И типа серьезно, покуешь за 200 баксов и сидишь ебешься чтоли?
>>855620 и кстати если ты думал что отзывы могут хоть как-то помочь не купить кусок говна то нет, негативные отзывы можно тупо удалять чем хуесосы вроде автора odin inspector занимаются с огромным удовольствием
Мне бы вообще хватило подробного тутора по рпг где водят за ручку и все показывают. Запросы по реализации у меня небольшие. Помните Lineage 2 или первые версии вова? Вот геймплейно в этом духе, только без онлайн составляющей и сложных штук вроде инстансов: -глобальная система статов и пассивных/активных умений (одна и та же для игрока, нпс, моба) -реализация квестов с простейшими сценариями -дроп предметов, где статы экипировки генерируются в зависимости от уровня персонажа -инвентарь
Первая планка для меня - создать набросок стартовой деревни с парой -тройкой функциональных нпс: кузнец, торговец, учитель навыков, житель выдающий один единственный квест на убийство мобов в двух локациях рядом.
>>855603 Благодарю, попробую разобраться или что нибудь за основу взять
>>855638 >-глобальная система статов и пассивных/активных умений (одна и та же для игрока, нпс, моба) >-реализация квестов с простейшими сценариями >-дроп предметов, где статы экипировки генерируются в зависимости от уровня персонажа >-инвентарь это не сложно, проблема только с визуалом, если ты не умеешь рисовать или моделить это я
>>855639 Я начал изучать моделирование за 7 мес. до установки юнити. В реализм не могу, и не стремлюсь (моего железа на это просто не хватит). Текстуры на граф планшете планирую отрисовывать. Стремится буду примерно к такой же стилистике как на пике (естественно выйдет хуже).
У меня проблема с кодингом, придется учить эти скрипты так или иначе. Ну и звук, откуда то придется брать саунд. В качестве затычки на первое время будет нейрогенерация с AIVA
>>855643 Единственное я не знаю как с растительностью быть. Вероятно в юнити есть инструмент, чтобы загрузить туда вариации растительности, какого то мелкого окружения (обломки, вещи) чтобы потом мазать это по террейну.
Микровопрос. А нелинейное замедление времени для всех кроме персонажа при активации умения это сложная механика? Грубо говоря после прожатия кнопки время только начинает замедлятся, через 3 секунды достигает своего пика (полная остановка) и после снова уходит на ускорение.
>>855712 "просто" все затронутые замедлением объекты должны использовать в апдейте вместо Time.DeltaTime какой-то условный MyTime.DeltaTime с которым в начале фрейма производятся все необходимые искажения относительно обычного течения времени.
Вот несколько советов, они не прям критичны тут, но в будущем могут пригодиться:
Пик 1. Лучше не делай GameObject поля. Вот нупример у тебя есть player, и ты ниже из него получаешь PlayerController гет компонентом. Лучше сразу пусть будет PlayerController player. Почему? Потому что есть риск что ты перетащишь туда что-то не то, в процессе игры вылезет ошибка и ты потом долго будешь искать в чем дело. Конечно в такой маленькой игре ты быстро найдешь, а представь игра больше будет.
Пик 2. Есть атрибут RequireComponent. Советую его повесить на этот класс, чтобы не было такого, что скрипт ты повесил, а ригидбади забыл.
Пик 3. Вот у тебя есть private KeyCodeButton. И этот геймобжект где-то лежит на сцене. Чтобы это поменять тебе надо открыть сцену, найти его и там менять. Ты мог бы использовать ScriptableObject с этим кей кодом и запихнуть его сюда в качестве параметра, а его уже положить в папку настроек какую-нибудь. Когда у тебя будет много таких настроек(особенно которые нужны сразу нескольким объектом и должны быть одинаковыми), то будет сложна перебирать сцену и искать там всё, поэтому лучше заранее подобные вещи с СО делать.
Пик 4. Чтобы не мучаться с this и не добаалять везде pub, можешь просто на поля класса добавлять префикс _. Будет у тебя не protected float speed, а protected float _speed, зато больше никаких this и никаких pub
Что есть открытый мир в игре на юнити? Правда ли что новичку в эту сторону лучше не смотреть и обходить стороной? Что если будет псевдо открытый мир с условными переходами которые обусловлены геймплеем?
>>855998 Ну как давно, может несколько месяцев. Я скорее не изучаю а гуглю в процессе. Изучал шарп.
За советы спасибо, а насчет this, я просто на РАБоте с похожим на шарп ЯП работаю и уже привык.
Вообще задумка была максимально по солиду сделать и чтобы ориентироваться и поддерживать было относительно просто. Понимаю что хуйня но тем не менее, я пытался. Завтра начну рерайтить первую игру Понг, можешь тоже глянуть если хочешь)
>>855998 Вот насчет настроек кстати не знал. Я тоже думал мол как сделать так чтобы например имена сейвов сохранить в одно место и там их доставать, или вот то что ты описал. Гуглил - не нашел ничего
>>855998 >просто на поля класса добавлять префикс _ а я считаю это крестобесовщиной и визуальным мусором хотя конечно зис еще хуже мне проще в аргументы newX передать чем видеть эту хуйню во все поля
>>856032 Тоже когда-то так думал. Пока не стал возвращаться к старому коду. И когда его читал, то понял, что мне приходится тратить время (пускай секунды) на то, чтобы понять является переменная локальной или же это поле класса. Поэтому теперь использую "_". Да и в целом следую современному коде-стайлу команды .NET
> Вообще задумка была максимально по солиду сделать и чтобы ориентироваться и поддерживать было относительно просто. Понимаю что хуйня но тем не менее, я пытался. Завтра начну рерайтить первую игру Понг, можешь тоже глянуть если хочешь) Ну обязанности ты кое-как разделил, но с поддержкой тут еще много работы. Пикрил например. Короче основной совет, что вот прям супер сильно и заметно прям щас можно улучшить - пытайся сделать так, чтобы у тебя было как можно меньше GetComponent(за исключением когда у тебя висит RequireComponent или когда ну это реалльно надо, в твоем случае с обстаклами по идее - но сделай отдельныц гемобжект, повесь их под него, и на нем делай GetComponentsInChildren тогда уж) или его аналогов - пусть ты сделаешь новый класс, пусть ты добавишь поля куда надо мышкой будет перетащить потом значения, это всё лучше чем работать с GetComponent и надеяться что нужный компонент действительно есть на нужном месте.
>>856011 Ой да подумаешь, для нескольких месяцев это ок
>>856014 Ну, FindObjectsWithTag это очень тяжелый метод, а ты его ебошишь каждый тик фиксед апдейта. Его ток иногда можно юзать.
Тебе надо сделать класс управляющий списком обстаклов, чтобы он обновлял список только когда это надо, и все кому этот список нужен уже у него его просили.
По второму пику - получается у тебя текстовое поле хранит рекорд. Во-первых из этого вытекает ебанина с parseInt, а во-вторых это как бы не его обязанность - текстовое поле должно отображать информацию а не хранить число. Т.е. тебе надо сделать класс для управления рекордом, который будет чекать сейв(это лишняя обязанность если прям поехать на солиде, но по здрааому смыслу это ок) и сохранять его по необходимости, и через него все остальные будут получать рекорд в виде int, и дальше нужен класс отобразительРекорда который будет чекать рекорд и заносить его в текстовое поле(но не каждый тик апдейта, а когда пришло событие что рекорд обновлен - гугли пока что в сторону c# events и UnityEvent, ну и если хочешь базу то это называется паттерн обсервер)
>>856050 > Тебе надо сделать класс управляющий списком обстаклов, чтобы он обновлял список только когда это надо, и все кому этот список нужен уже у него его просили. Или вот так > в твоем случае с обстаклами по идее - но сделай отдельныц гемобжект, повесь их под него, и на нем делай GetComponentsInChildren тогда уж
>>856050 Просто других вариантов не нашел. С поиском по тэгу слышал что тяжелый метод, пытался просто сравнение объектов, а там хуйня получилась тк объект который я цепляю уничтожается хоть и префаб, а это нульреференс вызывало насколько помню. А так спасибо, буду иметь ввиду.
>>856064 А что из подобного вообще стоит новичку "покупать"/брать по бесплатной лицензии? Или же это профессиональный софт, и для нуба не будет разницы между audacity с десятком плагинов и этим wwise?
По другому спрошу >>856084 Какой софт посоветуете для общих задач по звуку начинающему? Задач несколько: 1. Обработка звуков записанных с микрофона - шаги, лязг, звуки оружия, столкновений либо взятых с стоков 2. Синтез с нуля чего нибудь необычного, что нельзя изобразить в домашних условиях
3. (необязательно) Обработка фраз для озвучки персонажей
>>856050 Я начал исправлять другую игру, там сделал по другому, можешь глянуть если хочешь. Надеюсь это получше. По крайней мере теперь там геткомпонент один и при добавлении новых объектов не надо добавлять их в коде
>>856050 >>856527 Правда у меня такая хуйня что мне надо и переменным присваивать гейм объект и массиву гейм объектов то же самое делать. Я пока не понял как сделать так чтобы избавиться от такого дублирования
>>856595 Там у меня есть переменные геймобжектов чтобы их использовать в качестве аргумента для переключения а в массиве нужно чтобы их запарсить и закинуть в словарь чтобы менеджмент панелей работал
Качал сегодня на йоте ебаной 65 гигов балдуры третьей, чтобы посмотреть как там сделано. А она сука на стим режет скорость до мб/с. Плюнул, пока качалось, сделал по памяти из нвн. Теперь у персонажа в статах будет как общий фит, так и фиты его составляющих. Кодить днд конечно это ебаный ад, особенно 5ую редакцию, там какой только залупы не добавили я ебал его мамы рот. Там тупа 300 страниц правил еще выучить надо пиздец. А правила написаны не сказать чтобы там прям изложено все четко тоже вникать надо. Параллельно еще троелсена 1700 страниц читаю.
Кстати насчет вакансий джунов. Я в одну гк залупу на похуй закинул, отказ пришел спустя 20 дней только. Вот такой там конкурс на место походу.
Посоветуйте ру коммьюнити по юнити, желательно такое, основательное, не новое. Мне для того чтобы поискать очевидные вопросы которые задает каждый второй нуб.
>>856884 Пацаны, советуйте. Карочи у файтера, паладина, ренджера, варвара и может еще у кого-то точно такая же профа по оружию. Я пока ебанул просто для каждого отдельный класс с повторяющимся кодом, но это офк не правильно. Есть другой вариант, взять класс файтера, отнаследовать всем остальным от него и просто переопределить в нем описание. Но этот подход, я полагаю, тоже не правильный, потому что они все в горизонтальной зависимости. Т.е. получается мне нужно сделать абстрактный класс AllWeaponProficiency, а уже от него каждый класс с такой профой будет наследовать и переопределять дескрипшен под себя.
>>856884 Ты в курсе что у днд есть бесплатная версия, где всего один фит, и всего по одному архетипу класса, а есть платная, по которой ты игру делать не можешь? Ну то есть можешь, только потом никуда выложить не выйдет.
>>850680 (OP) А у вас было такое. Целый день хуячишь жёстко, под конец к ночи/вечеру пиздецки устаешь. А на следующий день мозг работает намного хуже, вяло, и кодинг вызывает раздражение и даже простые вещи идут тяжело
>>857458 В последнее время я так не люблю гулять. Что я там не видел. Подумываю купить беговую дорожку. Открою форточку, закрою глаза и буду представлять что иду/гуляю по парку
А что если делать свою первую игру в режиме спидрана. Пох на код, архитектуру, дизайн и прочее. Просто чтобы был готовый продукт. Просто чтобы лишится gd/евственности. Естественно первая игра должна быть простенькой,типа floopy birds, поэтому из-за спидрана код все же можно починить, и чтобы в итоге все работало, даже с нарушением всех правил солид и прочего.
>>857744 >типа floopy birds Ну сделай, че там делать то, работы на полчаса? И чем тебе поможет, такая игра? Вон в геймджеме любом поучаствуй там такой уровень и будет.
>>857776 https://unityhub.ru - портал для всех юнити разработчиков Что сделано за 2022 год: 1. Был создан раздел "Документация" со всей официальной документацией (почти 25к страниц). И вся эта документация полностью переведена на русский язык. 2. Было написано 90 гайдов. 3. Был создан новый раздел "Магазин Ассетов", и загружено 300 ассетов. 4. Был создан новый раздел "Игры", и загружено 85 игр. 5. Был создан личный блог для пользователей, с возможностью оставлять посты и подписываться на интересующего Пользователя.
Что планируется сделать в 2023 году? 1. Возможность загружать на сайт игры формата WebGL. 2. Возможность подписки на загруженные игры/ассеты, чтобы следить за последними обновлениями данной игры/ассета. 3. Создание нового многофункционального раздела GameJam.
Делаю 2д топ даун поделие, нужно реализовать на одном враге несколько скелетных моделей для разных поз. Типо как пикрил, одна модель когда персонаж двигается вниз, другая когда вниз. Как лучше это сделать, создать в одном скелете/рисунке кучу слоев сразу на все позы, и выключать не нужные слои/кости в каждой конкретной анимации Или же создать несколько скелетов и как-то хитровыебано переключать их, чтобы на каждую позу включался свой скелет? Надеюсь понятно спросил
Допустим, я создал namespace Player. Какое тут соглашение по наименованиям А) PlayerMovement.cs: namespace Player { class PlayerMovement {} }
Или же
Б) Movement.cs namespace Player { class Movement {} }
Если не заметили, то во втором варианте я опустил слово Player из названия файла класса, и самого класса.
Вообще, у меня такая идея. Если файлы по Player находятся в одноименной папке Player, то как-то странно, что внутри этой папки, где и так ясно, что там все по Player-у, в названии файлов дублируется Player. То есть, в этом случае, если есть папка, то подходит вариант А).
А вот если файлы по игроку находятся в общей куче с другими файлами, то логично, чтобы отделить друг от друга, надо писать PlayerMovement. Ведь там может так же быть EnemyMovement.
Короче, я безыгорная чмоня, как вы поняли, но мне все равно это интересно.
>>858025 Неймспейсы хуйня. А кидать классы с одинаковыми названиями в разные неймспейсы типа потому что один для ишрока другоц для врага - и того хуже, это вообще кошмар, ни в коем случае так не делай.
>>858033 Назови хоть 1 объективный профит от использование неймспейса в твоем проекте
Неймспейсы нужны только когда над проетком работает несколько человек, при этом в проекте есть явное разделение на отдельные наборы модулей. Тогда неймспейсы будут выполнять 1)поисковую функцию - человек сможет сразу посмотреть что есть в каком-то неймспейсе 2)возможность быстро понять где идут зависимости между разными наборами модулей
>>858058 Сцук, ты конечно молодец, что попытался представить, что у меня за проект, но вопрос был чисто про нейминг, а то что я описал выше это взятые с рандома примеры. system.windows.markup.xamlparseexception - не нужен?
>>858058 Неймспейсы вообще не имеют отношения к тому, сколько человек работает, шиз. Или по твоему Вася может писать только в Render.Drawing, а Коля - в Input.Gamepad?
>>858068 Пчел, ты чо рофлишь? Ты спрашиваешь какое решение подойдет к рандомному проекту(ответ - рандомное, можешь хоть монетку подбросить, правда не жди с этого пользы) или всё таки конкретно твоему? Абсолютно любое решение делается исходя из проекта и его особенностей с какой-то конкретной целью - т.е приняв это решение ты должен получить какой-то профит с этого.
Если ты собираешься делать неймспейс Player и Enemy и в обоих делать Movement - то я тебе сразу говорю это надо совсем долбоебом надо быть чтобы не видеть какие из этого вытекут проблемы, поэтому я тебя сразу предостерегаю - не надо так делать, и лучше вообще свои неймспейсы не определяй с такими вопросами раз ты не понимаешь зачем они нужны(если бы у тебя был проект, где они нужны - ты бы сразу это понял скорее всего и даже ни у кого ничего спрашивать бы не стал)
Вот пара подсказок: 1. Название Movement скорее всего никак не отражает что конкретно оно будет делать 2. Куча веселья в едиторе если они монобехи 3. Еще больше веселья в иде, надо постоянно чекать тот ли у тебя неймспейс подключен(особенно актуально если у тебя нормальная архитектура и оба мувмента один и тот де интерфейс реализуют), а если нужны оба то еще и юзингом переименовывать придется, и спрашивается а зачем ты их вообще одинаково назвал.
Короче ты в результате либо экран кулаком разобьёшь, либо переделаешь.
> но вопрос был чисто про нейминг Ну так нейминг сразу 2 проблемы затрагивает - понятность того что делает класс и конфликты имён.
>system.windows.markup.xamlparseexception - не нужен? Нужен. Во всяких бибилиотеках обязательно должен быть хотя ды корневой неймспецс. А десятки неймспейсов тебе в проекте скорее всего не нужны. using Infrastructure.Game.Entitites.Player; using Infrastructure.Game.Entites.Enemy и так нахуй целая простыня а в каждом по паре классов. Ебало представил своё от этого? А профиты хоть малейшие?
И абсолютно другое дело, когда проект большой или над ним работает много людей.
>>858073 > сколько человек работает, шиз. > Или по твоему Вася может писать только в Render.Drawing, а Коля - в Input.Gamepad? Ну конечно же нет бля. Вася говорит Коле - еба я сделал сервисы для прогресса игрока, давай ка в ui мне отобрази его. У нас там уровень, статы, деньги, дохуя всего ну разберешься короч. И коля такой пишет Game.Services.PlayerData. и ему иде сразу показывает че там есть и ему не надо ни по каким там папкам копаться и разбираться что ему нужно. Вот сразу понятный и конкретный профит который даже в небольшой команде будет. А если проект очень большой, то там будет еще и разделение кто над какими модулями работает поэтому могут быть конфликты имен, т.е. потребность в неймспейсах еще больше.
А сидеть в соло хихикать и отделять игрока от врага разными неймспейсами - ну это же безумие.
>>858153 Бля, тут "по старинке" работал, в понге я эту тему получше (на мой взгляд) сделал. Я во флеппи клоне исправил менеджер панелей, если выше посмотришь там литерали треш был. До этого чет не дошел
Аноны, что делать, Каори внезапно одела двое трусиков! Я ее об этом не просил. Две отдельные текстуры тела с белыми и черными трусиками. Скрипт просто меняет текстурные карты материала:
public void SetTexture(int _material_id, int _texture_id) { for (int i = 0; i < property_names.Length; i++) { target.materials[_material_id].SetTexture(property_names, textures[_texture_id]); } }
При этом в редакторе все отлично работает, эффект наблюдается только в окне игры. Версия Юнити древняя: 2018.4 LTS. Шейдер: https://github.com/Santarh/MToon
Сап юнитач, что используете для анимации UI? Сейчас смотрю/трогаю dotween и никак не соображу как сделать отложенный запуск секвенции анимаций. Вызывается метод, добавляющий ui элемент в очередь на анимацию(типо чтобы потом каскадом всё красиво сделать) и после добавления последнего элемента вызывается коллбек, котороый запускает каскад. Насколько я понял, то секвенция запускается сразу после того как она заполнится, что мне не совсем подходит, т.к. между добавлениями элементов могут быть большие временные промежутки. Помогите идиоту :(
>>858514 Цикл перебирает просто массив строк property_names, ну то есть параметры шейдера где хранится ссылки на текстуры. Ну, так чтобы не только _MainTex изменить, но и карту для теней. Материал и текстура только одна в данном случае, так что вряд ли это связано.
>>858653 Я в шейдерах не шарю, честно. Просто я это вижу так, что он тупо назначает каждый элемент пока не дойдет до указанного тобой. Даже если по итогу остается только требуемый, я почему-то считаю что сам цикл какой-то странный и можно сделать эффективнее если ты просто вызовешь нужный тебе элемент
Делаю простенький лифт для 2д платформера. Пустой геймобжект лифта и платформа лифта в дочернем объекте с коллайдером(так надо)
Вопрос: можно ли как то подсосать методом OnTriggerEnter2D из родительского объекта контактирует ли игрок с дочерним объектом? Есть конечно вариант повесить скрипт еще и на платформу который бы определял стоит ли на ней игрок и сигналил об этом в скрипт лифта, но хочется все одним скриптом.
>>858753 получить ссылку на дочерний коллайдер и прописать в родительском скрипте событие с определением, что произошло ли событие именно с дочерним коллайдером? Но на мой дилетантский взгляд - достаточно костыльно
Опа, тут перекат надо делать, а я в кровать уже лег. Ну ладно, завтра встану и перекачу. Надо только над картинкой подумать, чтобы не хуже чем в этом треде была.
>>858828 Врядле, у инфоциган будешь самым хуевым, а для того чтобы стать как Ссакутин надо ещё курсов навалить за шекели, ну ты понял. Лучше ментора поищи, сделай портфолио и тыкай вакансии.