24 декабря Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!
На Unity сделано много замечательных игр - 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 лицензию.
- Движок Если ты уже умеешь использовать язык, то можно приступать непосредственно к изучению движка. Крайне рекомендется купить/скачать книгу Unity in action (Unity в действии). В ней подробно описываются множество возможностей движка. http://www.ozon.ru/context/detail/id/34792570/ Также посмотри на видеотуториалы с официального сайта: https://unity3d.com/learn/tutorials Если же ты не любишь видеотуториалы (или не понимаешь разговорный английский) и предпочитаешь текст, то посмотри здесь: http://catlikecoding.com/unity/tutorials/ Тут крайне подробно описан процесс разработки и приведены примеры кода. Эти туториалы универсальны и описывают множество различных частей игры, от работы с текстурами до генерации карты мира. А вот в этом туториале описыватся разработка двухмерной игры с видом сверху: https://www.raywenderlich.com/61532/unity-2d-tutorial-getting-started Это будет полезно, даже если ты планируешь разрабатывать трёхмерную игру. Ни в коем случае нельзя обойти вниманием этот сборник туториалов: https://noobtuts.com/unity В нём подробно описывается процесс пошагового создания разных игр - двухмерных и трёхмерных.
Разумеется, все эти туториалы охватывают лишь часть возможностей Unity. Самый надёжный способ выучить Unity - это начать делать игру и по мере разработки гуглить непонятные моменты.
>>744242 Знаешь, зависит от того, даст ли ECS профит твоей игре. Сейчас использовать ECS ради ECS нет смысла. Только когда они доведут его до ума, настроят редактор максимально под ECS, вот тогда да.
Лично я в следующем проекте буду использовать ECS, потому что у меня будет много сущностей с разными способностями и разные режимы игры.
>>744246 Просто я только вкатываюсь и мне довольно сложно грамотно делать архитектуру в ООП, код превращается в пиздец очень быстро. Это же выглядит как решение да и мне будет проще, наверное без сильного бэкграунда перейти на другой подход.
>>744252 >я только вкатываюсь Тогда я тебе совершенно точно не советую сейчас связываться в ECS. Юнити работает на компонентах. Старайся разбивать свои сущности на компоненты. Не используй наследование. Чем меньше работы выполняет компонент, тем лучше. Ещё почитай про ScriptableObject, которые используют для хранения данных.
>>744256 Ну как, вкатываюсь. У меня есть профильная вышка по пограмированию, ноль коммерческого опыта и знание юнити по нескольким слитым курсам. Я могу понять от чего бегу. Хотелось бы ультимативное решение для архитектуры.
>>744258 В тех видео выше, поставь Субтитры - английский, появится в окне настройки субтитров, где ты ставил язык, кнопка "перевести" - поставь русский. Тема специфичная, почти вся информация на ангелском по ECS.
>>744261 >пока не связывайся с ECS Я пока только изучаю движок, так-что первые мои мобильные говноигры точно будут на стандартной системе.
Просто выглядит очень интересно и я попробую потыкать, часик в день как для общего развития. Использовать превью пакеты в любом случае, как то стремно.
> объективно лучший игровой движок Жир начал сочиться из системного блока рано утром. Солнце только показалось из-за горизонта, запели первые утренние пташки, а под компом уже была порядочная жирная лужа. Я не понимал в чём причина этого явления и просто протёр лужу. Когда я включил компьютер, жир начал вытекать уже и из монитора тонкой но непрерывной струёй. Я терпел, я думал это пройдёт. Но всё же была непонятна причина столь активного жироотделения. Когда я зашёл на двач, жир потёк таким потоком что нужно было подставлять тазик под монитор и системник и выносить их каждые 20 минут. Потом я открыл этот тред... Это было нечто невообразимое, это был уже не поток, это было какое-то цунами жира! Он хлынул из компа, ничто уже не могло его остановить! Поток жира нёсся, снося всё на своём пути. Не знаю каким чудом мне удалось уцелеть, ибо от моего дома остались одни руины, двор сейчас похож на пустыню с барханами из жира. Погибли люди, некоторые лишились крыши над головой. Оп, что же ты наделал?
Повесил на тайловую карту tilemap collider, на сам танк - box collider и rigidbody. Возникла проблема видеорилейтед - при столкновении с препятствием танк начинает вращаться в воздухе, словно он висит в невесомости. Как это фиксить? Сделал в Update постоянное обновление скорости и поворота танка, но это какой-то костыль. Как сделать его фиксированным в пространстве, без инерции?
>>744290 >столкновении с препятствием танк начинает вращаться в воздухе В компоненте rigidbody танка есть Constaints, там поставь галку на запрет вращения (rotate по какой-то из осей), ну и с другими опциями поиграйся, это rigidbody дает такой эффект (или погугли видосы - я просто давно не работаю с 2д, так сразу не вспомню, то точно такое делал)
>>744322 >Ни одной игры в /gd за все эти годы на нём не сделали. Да здесь вообще с играми туго. Либо шизокал, либо унылые пиксельные платформеры, которым Уеч ни к чему.
>Это один из промышленных движков, рассчитанных на команды. Бред. На нём наоборот в разы проще работать в одиночку, чем на Юнити.
По какому принципу ставится wheel collider? У меня постоянно они то вбок то задом наперёд. Использую костыли в виде инверсии motortorque, и создания всяких боксов в моделях с их последующим разворотом
>>744335 Там много встроенных фич, которые в юнити тоже есть, но требуют чуть большего знания для использования. Пост-процессинг, character controller, болванчик персонажа и т.п.
>>744234 (OP) Сап юнитач, хочу вкатится в мульти ёрли аксес в стим, и по немногу рубить бакинские с косметики и простого доната. Посмотрел пару технологий через что реализуется мультик. Кто через что реализует? Надо ли арендовать сервак где-то за границей? Так как это выживач по типу дэйЗ, и подобных то думаю нужны сервера, нельзя же доверить вычисления на стороне клиентов. Также смотрел в сторону из совсех новых это MLAPI, но он только вышел и еще будет хз сколько дорабатываться. В общем копаясь чуть глубже базы, возникает куча вопрос уже на этапе планирования, реквестирую советов.
>>744377 >Кто через что реализует? Каждые по своему.
>Надо ли арендовать сервак где-то за границей? Да, по-хорошему. Иначе представь пинг у американцев, которые будут вынуждены играть на российском сервере.
Далее, где нам собственно запускать сервера. Либо ты будешь сам ебаться с хостингами, что очень утомительно и для этого обычно нанимают отдельных людей. Либо используешь готовые сервисы. Допустим PlayFab: https://playfab.com/multiplayer/
>>744452 Нажимаешь два раза на неё и в коде показывается где трабла, потом путём логики думаешь в какой момент это происходит, и в конце если не находишь дебагом ищешь, либо логами.
>>744457 Делаешь мультитреды, в юньке не очень сложная темка, но почитать документацию надо.
>>744452 В смысле как? У тебя объект, над которым ты хочешь совершить действие, имеет значение null, то есть там ничего нет. Соответственно где-то проеб с инициализацией (в инспекторе забыл перетащить например, или Find не сработал)
Есть примеры нормальной реализации state machine для 2д игры?
В коде, например, четко не разделяется падение и прыжок, а анимации разные. Или например. idle и movement. Нужно просто ифы ставить или как люди перехватывают смену состояний?
Всем привет, не подскажете, как работает Move() у Character Controller`а ? Просто думаю через AddForce реализовывать перемещение это немного долбоебизм, а на простой смене transform position пошловато, да и колллайдеры может перескакивать.
>>744556 >>744557 Смотря для кого или чего. Что нужно удобно двигать куда надо, а что толкать физически. Контроллер тебе идеально подойдёт для гг, форсе для пули к примеру, а через трансформ для каких либо узко специализированных зада.
Как вы храните заготовки и идеи проектов? Не когда делаешь одну конкретную игру, а когда экспериментируешь с механиками, понимаешь что механика интересная, но прямо сейчас она не нужна.
Просто сейчас получается свалка, в которой я потом ничего не могу найти (вот почему юнитеки не могли добавить не только ввод названия проекта но и его описание? Всего одну строчку текста блин к проекту в юнитихабе)
>>744648 Для тебя, и тех кто использует вообще всё просто, делаешь нужную механику/объекты/сцены, потом просто это в бандл экспортируешь, он автоматом подтягивает все нужные ресурсы для работы. Остаётся в конце просто переименовать ассет чтобы было понятно что это, или иметь текстовик с кратким описанием каждого твоего ассета по названием файлов, тут как говорится воля фантазии.
>>744648 Ты можешь экспортировать файлы из проекта в .unitypackage (всё, что ты качаешь с ассет стора - в точно таких же бандлах лежит). Назвать как тебе удобное и хранить на пк. Это более простым языком то, о чём анон выше написал
>>744558 А для NPC например? (логично, что так же подходит) Я просто думаю что не слишком ли он перегружен, мб лучше реализовать свой контроллер через rigidbody
>>744702 Для нпс у тебя Аи_клиент уже встроенный, там вообще ничего делать тебе не надо. В юнити если посмотреть всё можно делать самому через свои более простые(как кажется на первый взгляд) велосипеды. Пробуй сделать сам, вдруг и взаправду для твоих целей подойдёт лучше чем ванила от юньки, но я конечно очень сильно сомневаюсь.
Сап юнитач! Пытаюсь разобраться с физикой Hover Car. Чтобы делать через PID регуляторы - я достаточно тугоумен а туторы с ютуба нихуя не помогают. Как тарантас пиздошит при наезде на препятствие - так и пиздошит, хотя повторяю всё в точности что на уроке. Аноны кто делал хавер кары, поделитесь советом, как заставить машину перетать прыгать после того как она наехала на препятствия
Посоны, возможно тупой вопрос, но все же. Делаю кликер, поставил ui button в центр экрана, кликаешь по ней - получаешь бабло. Мышкой все работает нормально, на телефоне одним или двумя пальцами тоже норм, а вот если 3 пальца заюзать кнопка не реагирует. Можно это починить как-то?
>>744714 >>744684 Никаких мыслей? Может хоть подскажете, где спросить? Я пытался на форчан залезть по такому поводу, но не нашел там где можно задать такой вопрос
>>744763 В смысле "хз"? Вы что, не пользуетесь URP? Да, это то, ну а как редактировать его параметры через код то? Там всё о том, как самому наскриптить рендер пайплайн, а мне в рантайме надо его редактировать. Проблема то в том, что этот пайплайн не висит на каком-то объекте, чтобы я мог обратиться к нему с помощью геткомпонент
Но если у тебя там динамическая смена микронастроек каждую минуту, то создавать 100500 пайплайнов явно неудобно будет, не уверен сработает ли это и потестить не могу, но можешь попробовать так: Закидываешь свой пайплайн в Resources, через код загружаешь его "as RenderPipelineAsset" и редактируешь. Вполне возможно, что после этого нужно будет сразу его заново назначить в настройках, но если и без этого будет работать - то не нужно. Не уверен, что второй способ в принципе сработает, но попробовать можешь
>>744772 >AllowMultituch в настройках камеры или проекта (player-android) Что-то не могу найти такое >также изпользование OnPress() Но тогда же будет обрабатываться не нажатие а удержание кнопки? Или как это работает?
Посоны, как unity ads работает с другими сторами? Если я например выложу игру в xiaomi сторе реклама unity будет работать? Что указывать тогда в айдишнике? ID гугл стора?
>>744769 Спасибо. Звиздец, 2021 год уже подходит к середине, полтора года уже прошло, как был задан вопрос на форуме юнити, а чтобы менять элементарные параметры графики в УНИВЕРСАЛЬНОМ рендер пайплайне (который юнити преподносят как неизбежное и верное решение в будущем) всё ещё надо накатывать сторонние хаки от левых чуваков.....................
Вопрос. Кто как сохраняет настройки для своих костылей? Вот сделал я например EditorWindow, оно редактирует какие-то игровые ресурсы, все заебись. Но хочется сохранить какие-то настройки конкретно этого окна, а не игровых ресурсов. Например цветовую палитру, или какие-то чекбоксы для тех или иных инструментов чтобы они лишний раз глаза не мозолили, но чтобы я мог их включить когда они нужны.
Я обычно загоняю такое в ScriptableObject, но это надо чтобы окошко его создавало когда его нет, чтобы оно его искало, если потеряло. Поэтому хотелось бы узнать об альтернативах.
>>744879 Я знаю. Оба какое-то говно в целом. Хранить что-то в регистре это самое ебанутое что может предложить юнити, а в скриптабл обжектах я и так уже храню. Но там "поищи папку с проектом костыля, поищи папку в папке, поищи в папке в папке этот файл, если не нашел то поищи по типу, если не нашел вообще ничего то создай", а потом переименуешь название папки костыля и вспоминаешь где там указать переименованную папку. Не-у-доб-но.
>>744897 Я хранил, но когда проект состоит из связки костылей которые кочуют из проекта в проект и иногда надо папку переименовать чтобы красиво было, иногда ещё какую-то хуйню сделать это становится неудобно. Приходится дробить файлы настроек, делать какую-то хуйню для поиска потерявшихся.
Вообще да, у юнити же EditorWindow наследуется от ScriptableObject. Можно же получить моноскрипт через MonoScript.FromScriptableObject(this), получить путь к моноскрипту через AssetDatabase.GetAssetPath(obj) и наконец получить AssetImporter через AssetImporter.GetAtPath(path); а дальше творить всякую хуйню через этот импортер через его userData и не забывать сохранять его. Конечно там хранится простой стринг, ну да и хуй с этим. Для хранения настроек окна вызываемого этим скриптом наверно покатит. Похраню пока там всякую маловажную хуйню и если чето наебнется то приду ныть в тред.
Привет, народ! Решил потыкать Юнити, скачал, и столкнулся с проблемой: я не могу собирать билды под Винду и Макось. Только Линукс I use Arch btw. В хабе галочки напротив Windows Build Support и Mac Build Support стоят, но билд под Винду все равно не могу сделать. Что за хуйня, анон? Как это лечится?
>>744034 → > Посоны, посмотрел видос этого вашего сакутина. В чем проблема использовать имя объекта, а не тег? Почему на пике лучше? Чисто с точки зрения производительности, в данном случае проверка тэга может быть быстрее. Поскольку ты не пытаешься конвертировать весь объект в объект Player, а просто сравниваешь строчку тэга.
>>744900 Тут хз, хз. Как написал выше, использую бинарники уже пару лет, до этого юзал хмл, но не зашло. С натяжкой могу разве что сказать получаются большие структуры, и под определённые игры может быть это будет не ок.
>>745066 Насчёт гайда не знаю, маловероятно что рабочий в шаре есть. Есть куча говно видосов, их брать за основу нету смысла, но для инфы посмотреть стоит. Я делал двумя способами, оба рабочие, но со своими тонкостями. Первый это реализация в юнити костями и скриптом. Второй в блендере запекал несколько вариаций покачивания и уже в юньке на её костях дополнял ими. Варианты не идеальные, и со своими минусами, но для тянучки подходят хорошо, и смотрятся не сильно всрато.
Посоны, на андроиде игра проседает по фпс, в профайлере Gfx.WaitForPresentOnGfxThread > Semaphore.WaitSignal занимает 63%. Гуглил, нихуя не понял. Подскажите как починить?
>>745055 я тоже использовал но само наличие внешнего файла это геморой.
вообще вот да, использовать юзердату пока заебись для хранения настроек окна. особенно учитывая то как у юнити удобно встроен json.
>>745100 там где хочется иметь доступ к этому полю через тип, а не лезть через инстанс и там где он нужен только в одном экземпляре.
на самом деле кучу говна можно по умолчанию делать статичным. единственный реальный минус статичных классов в юнити это пожалуй то что хер его знает когда они там инициализируются и лучше это делать вручную.
>>745128 У всех ставиться, у тебя нет. Совсем хлебушек? Удали подчистую тогда и поставь заново, не забывая указать при установке галочки каких пакетов тебе нужно. Нахуй ты вообще только линукс при установки выбирал?
>>745107 >я тоже использовал но само наличие внешнего файла это геморой. Погоди, а как ты собирался хранить инфу об прогрессе и игре не во внешних файлах? Реестр? Наркоман чтоли?
Пиздец посоны, запилил простую 2д игру. Тестирую на двух телефонах, один послабее, другой поновее. Поставил Application.targetFrameRate = 60; ну а хули, нахуя мне больше 60? Новый телефон выдает ~60фпс, старый - 33фпса. Ебался неделю, оптимизировал, переписывал код, пережимал картинки, качество крутил, вертикальную синхронизацию ебал. Один хуй на одном 60, на другом 33.
Сейчас попробовал поставить Application.targetFrameRate = 300; теперь на обоих телефонах 60 фпса. Вот какого хуя? Что это было?
>>745184 Мы о настройках окна для редактирования каких-то ресурсов лол. Написал же. Вот есть окошко. Хопа скрипт этого окошка, или папка этого окошка гуляют по проекту. Как хранить настройки окошка? Создавать файл? Надо тогда как-то следить за ним. Создавать когда его нет, как-то следить куда его пихать и желательно не терять если все это в разных папках. Неудобно. Надо чтобы юнити само как-то там делало всё и не теряло файлы настроек, а желательно даже чтобы я не знал где они вообще. Совать в реестр? Не вариант. Но! Юнити таскает за всеми файлами мета-файлы. Ткнул в них и смотрю обана а там же есть какая-то строчка с юзердатой. Я что, могу сам туда свою дату совать? И юнити будет за меня таскать эти файлы само куда скажу прямо за скриптом? И я их не буду видеть? Заебись!
А вот надо например как тут. Делаю окошко для редактирования паттернов. Допустим я хочу сохранять статус открытых кнопок-вкладок как справа, какие-то значения (в данном случае размер пиптиков и толщину линий) и какую-то библиотеку связывающую цвета с типом чтобы было понятно так что куда сунуть можно. Как бы мелочь, а как-бы приятная. Городить ради такой хуйни отдельный файл? Ну нахуй. А тут хопа и можно в метафайл скрипта самого окошка сунуть эти настройки предварительно сериализовав в строку через json который так клево встроен в юнити. Удобно? Удобно. Не проебу? Проебу только с метафайлом который кочует за скриптом один хрен. Да и даже если проебу то не так и важно всё это.
На мой взгляд для каких-то мелочей просто идеально.
>>745271 Я то понял, без обид, но ты пишешь какую-то ахинею. Тебе надо хранить допустим данные, для этого у тебя есть файл, или при очень большом количестве несколько. Всё что тебе остаётся это написать один скрипт который будет сохранять/загружать, всё.
Поэтому повторюсь, без обид, но ты явно не шаришь, и советуешь адский велосипед.
Решил потыкать юнити, тк свой движок писать впадлу. Че он от меня хочет? Скрипт кстати уже привязывался и была эта ошибка, которая фиксилась магическим образом пока я отходил. Сейчас ни в какую.
>>745341 Мне кажется это ТЫ не шаришь и читаешь не внимательно. Мне бы хотелось узнать сколько у тебя опыта работы с юнити. Когда у тебя уже есть некоторые инструменты удобные для прототипирования, но тебе не нужны все они, то нужна модульность. Нужно иметь возможность разделять свои инструменты. Наличие какого-то единого файла настроек как минимум подразумевает какую-то общую архитектуру между инструментами. Уже неудобно. Совсем пиздец как неудобно. Сегодня в проекте нужен какой-то генератор хуйни, завтра нужен дебугер, послезавтра какая-то другая библиотека, а послепослезавтра они перестают быть нужны и надо их удалить и сунуть что-то ещё. Какие варианты? Сделать скриптабл обжект "настройки" и писать их как partial класс добавляя туда от других инструментов? Неудобно, громоздко, требует зависимости одного проекта от другого. Или делать так чтобы каждый инструмент имел свой файл настроек, тогда надо писать в каждом инструменте скриптабл обжект и некоторое количество кода чтобы он не потерялся. Менее неудобно, но более громоздко. А желательно создавать рядышком папку Resources просто чтобы не проебать его.
А тут обана вон выше десяток строк кода которые заменяют всю возню с файликами, потому что эту возню делает само юнити. Заебись.
Юнити как назло ещё и не даёт сериализовать EditorWindow в файл, не смотря на то что оно наследуется от ScriptableObject.
>>745370 Лучше не иметь пробелы в названии файлов со скриптами. Если создаешь монобихейвор или вообще всю хуйню что наследуется от UnityEngine.Object то лучше придерживаться тому чтобы название файла = название класса внутри него. И чтобы этот класс был первым который там упоминается.
>>745367 Вполне возможно. Знаю одного человека который писал штуку для управления дронами в юнити. И другого который делал красивую хуйню для расчета материала нужного для кровли крыши. Юнити же удобно само по себе для такого сорта вещей.
>>745393 А хуй знает. Предположу что ты с новым гуи сидишь.
Включи пиксель перфект, если не включил. Попробуй поменять размер самого шрифта в настройках. Попробуй поменять фильтрацию у шрифта. Это вроде font.material.mainTexture.filterMode. Ещё можешь попробовать уменьшить скейл у компонента шрифта, но увеличить размер самого шрифта в нём.
Простите за вопрос, но аноны, скажите пожалуйста: За сколько можно вкатиться с нуля с C# и юнити до первой работы? могу уделять 30 часов в неделю обучению. У кого какой опыт? Я знаю про кранчи и тд, но стоит ли вкатываться вообще сейчас в юнити c# ? Или лучше на галеру стандартную, но игры хоть мне нравятся, а веб прям работа работа Мне 23 если что, хочу устроить перекот
>>745493 Если опыт погромирования есть то наверно за месяц с таким темпом вкатишься. 3-6 и можешь уже принимать работу для дебилов. Работу найти не трудно, трудно найти хорошую работу. В шарп вкатываться это уже отдельная тема, но в целом юнити можно использовать для вкатывания в шарп в какой-то мере.
Вообще ответ больше зависит от твоих ожиданий. Что ты ожидаешь уметь делать? Быть человеком-оркестром трудно. Даже если только с кодом взаимодействуешь.
>>745519 Ну я бы хотел запилить свою игру хотя бы из ассетов,ну и мобилки не самые казуальные на работку. C# не знаю от слова совсем. Хотя думал еще начать моделить семостоятельно и сделать не самую сложную игрушку про жизнь славика сычева в школе, мб не один в 3d.
>>745522 >C# не знаю от слова совсем Поэтому лучше начни с изучения языка. А то ты пытаешься освоить одновременно два очень сложных предмета. Приведёт это всё к обосрамсу.
>>745536 Ну я планирую пройти курс по юнити, там c# в комплекте,вроде с языка и начинается там обучение.( с торрентов очевидно, я же не совсем поехавший) Моделлинг да, потом как-нибудь, уже после нахождения работы. Ну или самое простое в блендере если нужно будет для порфолио тайтлов. Ну ладно, в общем вкатываться можно я так понял, сильно подводных нет. Спасибо
>>745522 Ну, тут удачи можно пожелать только. Если моделить умеешь немного то может даже справишься. Если не умеешь то 2-4 недели ещё потратить придется до состояния когда себе плейсхолдеры сможешь делать. Вообще следует сказать что "изучать" в юнити и делать в нём игры немного конфликтующие процессы. Так как по мере узнавания новых вещей проще зачастую будет снести проект и сделать заново, чем пытаться исправить. Так что в начале поменьше цепляйся за свои поделия.
>>745536 Да так то одно другому не мешает. Я вот погромировать научился примерно в тех-же обстоятельствах. А юнити в каких-то базовых вещах помогает узнавать язык как-то более интерактивно. Не сидеть консольное приложение писать, а делать чтобы там говно падало из жопы осла процедурно. Проще поставить себе цель!
Но да. Лучше для начала хотя=бы пройтись по различиям reference/value типам и че такое stack, а что такое heap,
>>745538 >Не сидеть консольное приложение писать Лул, я когда изучал C++, то параллельно начал писать консольную игру. А уже через несколько месяцев начал писать свой 2Д двиг, чтобы выводить картиночки.
Посоны, помогите. Делаю 2д платформер, есть персонаж с такими возможностями: бегать, прыгать, делать комбо ударов мечем на земле, в воздухе. делать двойной прыжок, скользить по стене, отпрыгивать от стены, если нажат прыжок во время скольжения. Как лучше всего это сделать, чтобы без тонны ифов? Есть какой-нибудь пример?
>>745538 >reference/value типам и че такое stack, а что такое heap, А зачем это в юнитивском шарпе? Учитывая, что там распределение в памяти детерминировано, и массив, и объект будет размещаться только динамически.
Пацаны, простите за глупый вопрос, я только допиливаю свою первую игру и многое делая как мне кажется неправильно, поэтому важный вопрос знатокам: вы бы отсосали роману сакутину и почему он такой чед? C# буквально 3 месяц изучаю, так что не обессутьте.
>>745539 Кек. Делал почти то-же самое когда меня учили делфи, но решил что аутизм.
>>745613 А знаком ли ты с шарпом? структ от класса чем отличается?
>>745632 А в чем сложность то лол? Вот есть у тебя абстрактная нода стейт машины, в ней ебани проверку физона и спрашивай её из такого-же абстрактного метода "процессить ноду". Заимплементи например ноду "полёт" и в реализованном там методе "процессить ноду" спрашивай не окончился ли полёт, а если окончился, то перемещайся в другую ноду.
Можешь даже не писать всю эту мошню с графом, а просто использовать для неё аниматор. https://docs.unity3d.com/ru/2019.4/Manual/Animator.html Там можно на ноды кидать бихейворы. Можно в этих бихейворах описывать все эти проверки. Заодно и анимации возложить на это.
Кстати! Какой клевый фокус. Я и раньше тыкал матрицу трансформации у гуи, но теперь узнал что можно заставлять его рисовать больше чем надо на самом деле через GUI.BeginGroup и таким образом можно скейлить свою хуйню по всякому.
>>745652 C++ господин, ты? Или просто неуч? У меня где-то была клевая ссылка объясняющая различия для C, C++ и C# между структами и классами, но я её проебал.
Нет, различия в том где они располагаются. В стеке, или куче. И то как они передаются. По ссылке, или по значению. Например, почему для класса мы получили 2, 2, а для структа 1, 2?
>>745656 Ммм, то есть myClass2 не создает новую сущность в памяти, а просто становится указателем на уже существующую - myClass1. Поэтому участок памяти с данными один и тот же, просто обращаемся через разные имена.
А структура, значится, создает сущность в памяти уже на момент объявления без использования new. А через new просто инициализирует данные. Надеюсь я правильно понял. Если да, то этот new меня запутал. Я думал он конкретно для динамической памяти.
>>745660 new просто для вызова конструктора. В случае структов не обязательно даже вызывать его. Достаточно объявить MyStruct myStruct3; myStruct3.myInt = 3; и оно уже считается полностью инициализированным. Но опять таки структы при желании можно передавать в методы по ссылке через ref. Ну и если я объявлю массив MyClass[] то это будет массив с ссылками. А при объявлении MyStruct[] то это будет по факту просто массив с int. Ну и разумеется производительность при кешировании у них будет мягко говоря различаться.
Так что да, это такой достаточно поверхностный способ менеджмента памяти в шарпе.
>>745666 Если в общем и размыто то да. Есть ещё боксинг-анбоксинг, в случае с юнити есть удивительные манипуляции с тем как копируются большие структы, ещё у шарпа есть unsafe код где можно упарываться пойнтерами и многое другое. Но в общем и целом да. При обращении к классу лезешь в кучу по ссылке, при обращении к структу ты обращаешься к связке полей.
>>745537 >курс по юнити На официальном сайте проходи, там есть два, один просто обозревает юнити как движок, во втором дают азы шарпа и поэтапно сделаешь 5 прототипов. Все остальные курсы говно. мимо
>>745692 Да у меня англ так себе пока что, так что пока думаю с отуса на торрентах пройти попутно апая язык, а там уже и досмотрю что нужно будет на англ. Жаль сакутина на торрентах нету, вроде годный чел. Меня больше то интересовала перспектива, что там по рынку с работой, есть ли проблемы с поиском(очевидно вакансии уже смотрел и на гд.ру и на нн и в группах вк, но все равно не до конца понятно было, но насколько понял, смысл вката все еще есть, как и перспективы)
>>745696 Там простой английский и после каждого ролика, есть простой список действий по пунктом для выполнения. Лучше этого формата ты не найдешь, будут 30 минутный ролики со скачущими туда-сюда мыслями без структуры.
У Сакутина, обычные курсы, там нет ничего особенного. Если интересно посмотри в предыдущих тредах, там анон давал ссылки на скачивания с файлообменников актуальных курсов 2019+
Делаю игру по типу марио 64. Столкнулся с проблемой переходов между уровнями. Каждый уровень - отдельная сцена, на сцене может быть несколько дверей которые могут вести куда угодно. Лайаут как на пике. Так вот, в скрипте двери я могу прописать какую сцену загружать, НО, как указать у какой двери спавнить игрока? Вроде в метод SceneManager.LoadScene() нельзя никаких дополнительных данных передовать.
>>745767 У тебя проблемы с тем чтобы связать между собой двери чтоли. Ну сделай в нужной сцене менеджер, на котором будет висеть словарик с сценами из которых туда можно прийти. Когда сцена загружается, она в статичном классе смотрит "ага игрок раньше был в этой сцене, значит суем его в эту дверь", после чего перемещает его в нужную дверь, а затем обновляет переменную сцены в статичном классе, чтобы все остальные сцены могли проделать то-же самое.
Это если не хочется делать какого-то няшного редактора и просто хочется получить результат.
траблы с запуском игрАноним30/05/21 Вск 23:33:16#147№745776
сап, товарищи. Проблема такая: запуская игру на юнити, получаю смачного цифрового хуйца. Игра начинает запускаться, но вылезает окно юнити и игра сразу же закрывается (или вылетает, хз). Чё делать в данной ситуации? Ниже картинка самого окошка на примере ЛМР (такая же хуйня и в among us)
Какой самый адекватный способ для локализации игр на разные языки? Попробовал lean localization чтобы особо не заморачиваться, но это бред по-моему 9000 обьектов на сцене держать?
>>745762 Для сохранения прогресса есть два пути. 1. Делаешь стартовую сцену перед своей основной игрой, и на ней объект, на объекте скрипт с нужными для тебя переменными, а в методе авэйк объекта ставишь донтдестрой, дабы объект не проебался при смене сцен. 2. Делаешь функию сохранения и загрузки из файла, и загружаешь/сохраняешь от туда в течение игры.
>>745807 Для текста файлик/файлики и смена текста при инициализации игры, либо же скрипты с текстом. Для текстур/моделей хранить их дубликаты.
>>745807 >Попробовал lean localization чтобы особо не заморачиваться, но это бред по-моему 9000 обьектов на сцене держать? Это нормально. Я писал свой простой локализер, но он примерно так и работает. В UI вешаю на текст компонент LocalizedText, который подменяет текст на локализованный. А внутри скриптов, где динамический текст, уже напрямую использую Locale.GetString(...)
Единственное, у меня ещё есть расширенный вариант LocalizedText
Сап, аноны. Подскажите, как сделать камеру а-ля Life is strange? Сейчас поясню: в LiS камера облетает персонажа, но глядит из-за плеча, благодаря чему можно наводиться на предметы. У меня же камера также облетает персонажа, смотрит на него через LookAt(), но смотрит она точно в центр. Никак не могу придумать, как пофиксить
>>745885 >Никак не могу придумать, как пофиксить Добавь пустой объект внутрь персонажа, назови его Pivot Point и размести справа. Пускай камера следит за ним.
>>745892 Только учти, что root объект твоего персонажа не должен вращаться, ведь иначе тогда и Pivot будет вращаться. У меня сама моделька персонажа, которая вращается, хранится в объекте Avatar, который находится внутри root объекта.
>>745904 На нём весят скрипты связанные с персонажем. Это управление персонажем и всякая логика. А внутри этого объекта уже сама моделька с аниматором, пивоты для камеры, объект для озвучки шагов персонажа и прочее.
Анон, дай видео урок по пиксельперфект 2д стилизованному под старые консоли аля nes/sega и с последующим портом под андроиды (то есть чтобы нормально показывало на всем этом зоопарке планшетов). Размер вьюпорта 320х240
Я конечно понимаю что есть статьи в том числе и от юнитидева, но это все разбросано. А мне надо вот прям за день вкатится в тему и начать делать игру - там игра на неделю разработки (я ее не сам придумал, а ворую с одной платформы со своими правками и заменой графики), нет времени вкатываться.
Делать методом проб и ошибок - хуита, сделал одну вещь, она них не работает - полдня гуглишь правильное решение, сделал вторую вещь, она них не работает - полдня гуглишь правильное решение. На игру времени нет
В прошлый раз пытался запилить рогалик и плюнул на него. А да, я еще перфекционист, не могу тяп ляп. У меня даже от координаты типа 1.00011 жопа горит из-за этой дробной части, а если спрайт на пиксель дальше нужного подвинулся от скрипта - я кидаюсь на монитор с желанием его разьебать
>>745894 Переводы текста лучше хранить в ScriptableObject'ах, а не в сцене. А ещё лучше - хранить весь текст в гугл таблицах, а потом его подтягивать в ScriptableObject, на который ссылается система локализации. Естественно, все это делается в редакторе, в билде у тебя будет объект со всеми строками и синхронизировать перевод "на лету" не получится.
>>746011 Раньше когда чекал тему была фишка что надо было всё расстаскивать по большому количеству, и не углублять всё в одном. Может сейчас уже что-то и поменялось.
>>746034 Как анон выше написал, в юньке, ты можешь всё что угодно кастомизировать, вот вообще всё, у тебя полная свобода в редактирование и добавление, это не говоря об анимациях, свистоперделках и т.д. Единственное что, требуется понимать что ты хочешь сделать чтобы изучать в нужном направлении.
Господа, пользовались такой услугой, как код-ревью? Это когда профессионал смотрит твой код в проекте и говорит, как улучшить. Если пользовались, то у кого брали? Или может сами делали?
>>746050 Анон, вот тебе гайд по лучшему кодревью, заливаешь на какой-нибудь pastebin/github (в зависимости от приватности проекта) заходишь на любой форум Борду пишешь что у тебя самый ахуенный код в мире. Вуаля бесплатное кодревью ток придётся фильтровать мат
Сап Юнитач, врываюсь в геймдев. Делал кто соединение по блютузу/wifi между двумя устройствами? Я не очень понимаю логику прогрузки сцен и передачи данных между телефонами. Я пока понимаю примерно так:На одном устройстве прогружаются два объекта и на втором устройстве прогружаются два объекта. И если первый игрок свдинулся, то на второе устройство отправляются новые координаты первого игрока и на втором устройстве эти координаты передаются объекту отвечающие за позицию первого игрока? А со сценами как тогда быть,если к примеру окружение на сцене каждый раз случайно генерируется?Передавать второму устройству сид для генерации?
>>746050 Могу провести ревью кода, если проект небольшой. Бесплатно. Порядок такой - скидываешь проект/код, я его смотрю, а затем в текстовом/голосовом виде рассказываю, что не так и как это исправить. Делаю для себя, чтобы потренироваться. Если заинтересовал - пиши контакты.
>>746144 >Бесплатно. Хуита кстати. Так как обычно в таких случаях у ревьювера одна цель - обосрать тебя (почему в интернете все постоянно хотят кого-то обосрать?). Никакого пользы от таких ревью нет и быть не может, так как их делают люди, возможно даже вообще не шарящие за программирование - ведь их цель не помочь, а обосрать. (поэтому в опенсурс проектах за такие попытки сразу дают баны и запрещают обсуждать тот же кодестайл). Ну может ты не из таких, я не знаю. Просто это мой опыт просмотра кучи опенсурс проектов за десять лет жизни.
А вот идея платных ревьюверов интересна - может реально есть такая услуга? И кто предоставляет?
p.s. впрочем хороший код нужен ровно в одном месте - на собеседовании, так что...
>>746148 Ты только что обосрал мое предложение, хотя вопрошаешь о том, почему все обсирают друг друга. Заранее обрекаешь мою затею на провал, не удосужившись проверить, действительно ли все так плохо.
По поводу попенсурса и комментариев в общих репозиториях - очень часто это делается для поднятия своего чсв. Формат моего предложения не подразумевает работы на публику, соответственно, мне не перед кем трясти бородой.
По созданию сервера что бы клиенты из стима подключались и играли на нём, какие есть доступные варианты? Билд сервер версии игры в юньке и последующее заливание куда то на хостинг, или чисто через код?
>>746150 >Ты только что обосрал мое предложение, Да я не твое предложение, а общий подход - когда ньюфаг выкладывает код на общее обозрение в надежде, что ему помогут и подскажут как надо писать код..
Тут есть те, кто в конторе работает и пилит под мобилки? Есть желание перекатиться из околоэнтерпрайза (опыт год, java. Игрушки игогда раньше кириллил, но на голых джаве и крестах). Насколько сложно попасть в юнити на разработку под мобилки с таким бэкграундом? Естественно, собираюсь подучить шарп (с джавы легко перейти будет) и сам движок изучить, запилить пет-проекты, с апи мобильных осей разобраться. И вообще, гиблая затея? Готов в доходе потерять.
>>746428 >друг Я пять раз входил и выходил из движка и несколько раз из из магазина в магазин. На буржуйском форуме мне посоветовали скачать ранние сборки 18года и там закачать ассеты, после чего и в сборке 21года они будут работать, тупо, ноя попробовал и о чудо, каким-то образом это сработало. Удивительный мир Юнити.Начало.
Еще вопрос Assembly CSharp.dll он собирает все скрипты вроде как, можно ли его отредактировать что б включить скрытые настройки (читы тригеры и прочее) которые там могут присутствовать или нужен полностью другой Assembly CSharp что бы там все это было прописано.
>>746505 Насчёт этого кадра. Хуесосит всего и вся, когда можно было бы обойтись без оскорблений.Но что скажет анон, посмотрев как программирует Рома?Заслуженно хейтит?
>>746508 Давно за ним слежо и не только по юнити, но и видосы на канале, раньше гавнокодил, сейчас более менее научился, бесит его ЧВС и предвзятое мнение, да и курсы его гавно я покупал С#, знаю.
>>746538 У вас случаем интернет не через проксю? Там есть проблема с юнити хабом, который не хочет авторизироваться если в видне включены прокси настройки
У кого-нибудь были баги в анимациях, когда не меняется цвет? Со всем, что касается размера или вращения, работает нормально, но как доходит до цвета, ничего не происходит. Видно, что значения в ключах rgba меняются, но сам цвет как был белым так и остался. Версия 2020.3.8
Есть ли ассеты с интерфейсом и меню в стиле клэш рояля и archero? Ну или просто как у жефолтных популярных аркад, у них все 1 в 1, думаю, что они тупо покупают ассет в сторе.
>>746465 Уже сам во всем разобрался девелоперы вы чмондельные ваш уровень клепать мобилку парашу с кучей багов сиди тут короче и не отсвечивайте хуtйсосы. Дорога в геймдев вам закрыта. ^_^ ..!..
Сам юнитач, возможно ли покрасить не весь меш, а только некоторые треугольники? Я сегененировал меш и хотел бы раскрасить его без градиентов. Т.е. один треугольник спшлодной зелёный,а второй треугольник сплошной синий,например
>>746662 В целом чисто на твой вкус. Оба движка хороши, плюс недавно выкатили UE5 в котором много полезных фич. В целом, если тебе нужно чисто чтобы на работу устроится или индюшатину делать - Unity будет выбором получше. Больше вакансий, движок удобней для всяких простых проектов аля мобилок и подобного что не отменяет возможность делать сложные игры аля Тарков или Pathfinder и пр. из шапки
В UE есть встроенные из коробки фишки, которые в юнити требуют действий от тебя, вроде пост-процессинга, болванчика-персонажа и подобного. Плюс, как я понял по презентации, в новом UE5 добавили много удобных штук для редактирования терейна и оптимизированного создания больших локаций. Еще из плюсов UE5 - у них довольно большой и удобный пакет ассетов для создания окружения.
Вся инфа по UE5 - сугубо статьи, презентации и поиграные игры на оном. В общем-то тебе ничего не мешает просто покопаться в одном и в другом недельку
>>746662 UE для профессиональной разработки. Я бы рекомендовал начать с Unity. Гораздо проще вкатиться и проще будет найти работу/команду инди-разработчиков.
как выпилить все мета файлы? и не сломается что-нибудь потом? просо хочу схоронить проект на харде или возможно кому-нибудь скинут, а он блядь 2 гига весит (при том что билд игры весит 180 мб)
А можно в InputManager настроить такое: Я нажал на какую-то кнопку, причем быстро нажал, и значение Input.GetAxis("SomeShit") плавно меняется с 0 до 1, а когда нажал второй раз, значение вернулось с 1 до 0. Главный момент, чтобы смена значения была даже тогда, когда кнопка, отвечающая за ось SomeShit не была нажата.
>>746732 PS на примере гонок: я лишь один раз нажал кнопку "W", и авто плавно едет второй, так как значение с этой оси равняется 1, даже с отпущенной кнопкой W. Или это придется вручную писать?
Есть какой-нибудь гайд как правильно делать гуи игры? А то начинаю делать через юнитевское - и какой то ад творится - куча всякого мусора, эти дурацкие координаты, расползается по экрану (то есть в редакторе все четко под разрешение, а в билде пол интерфейса где-то за экраном)
>>746734 Расставляешь в настройках UI места куда ему привязываться и во всех разрешениях всё делается само из коробки. Прописывать в коде или что-то самому делать это уже вчерашний день, либо уж для слишком специализированных и узко направленных решений, обычно анону для инди 100% такое не нужно.
>>746783 >То что на мобилах не делают нормальных игр - это другой вопрос Нормальные игры по каким критериям? Двачерским? Для меня хуинди в стиме - не игры - и я их никогда не покупаю. И что теперь? То, что на мобилках сплошной фритуплей, это уже особенности платформы. Никто не хочет там покупать игры.
Парни не могу понять чего он хочет. Scene 'Assets/Scenes/SampleScene.unity' couldn't be loaded because it has not been added to the build settings or the AssetBundle has not been loaded. To add a scene to the build settings use the menu File->Build Settings... UnityEngine.SceneManagement.SceneManager:LoadScene(String) com.pub.rpg2e.GameMaster:StartGame() (at Assets/Scenes/GameMaster.cs:27) UnityEngine.EventSystems.EventSystem:Update() Кароче есть две сцены, сцена с игрой и сцена меню. В сцене меню настрои кнопку старт, привязал к ней пустышку объект, а на объект пустышку кинул скрипт, в котором есть метод загружающий уровень. Если коротко то тело метода SceneManager.LoadScene("SampleScene"); Так вот пишет, что не может загрузить сцену, окей делаю ещё одну сцену и вывожу её в вершину иерархии пути и ничего, копирую путь сцены, ничего, этот еблан в книги даже толком не указал в какую папку сохранить сцены с игрой, в какую скрипты, а ты теперь догадывайся куда файл засунуть или какой путь указать.
>>746957 >Только, как это сделать конечно не сказал. Бля, если тебе еще и это обьяснять нужно, то нахуй ты вообще сюда пришел? Может ты еще и экран на телефон фотографируешь, вместо того чтобы скриншот сделать, потому что тебе никто не сказал на какую кнопочку для этого нажать?
ЗДАРОВА, КОТАНЫ! Ищу годный гайд по разбивке проекта на два апк под андроид. Как водится - основной апк для кор-механик, вторичный (для дозагрузки) под контент, как паковать и как это дело потом согласовать. Пилю первый проект манямечты.
>>746983 От души душевно в душу, но это я читал, забыл дописать что ищу альтернативные гайды. Да, разделять надо, хотя бы из тех соображений, что при необходимости допила после релиза, не пришлось бы все перезаливать и перекачивать юзерам.
>>747004 Ассет, платный можно спиратить Сам юзал в одной игре - работает чудесно, помогает избежать костылей для сохранения листов + по заверениям разрабов работает даже лучше, чем встроенные префсы
Глупый может вопрос: Пишут что GameObject.Find() это медленно. Проверил со стопватчем, среди 1000+ объектов нашло за 0.1 ms (меньше чем тратит Debug.Log()).
>>747043 Периодически, типа как меседж передать когда надо. Диалоговая система ищет акторов по сцене к примеру. (лень писать евент систему (если можно не писать))
>>747066 >ми-ми-ми никто в твиторе ни лайкает мое говно(((((( Вон люди на реддите постят свои поделки на юнити и получают тысячи лайков за сутки https://www.reddit.com/r/Unity3D
>>746939 А вообще, имеет вообще смысл вместо обычных событий делать так(пик)? С одной стороны, так проще тестировать код, потому что любой может послать событие, ты не привязываешься к конкретному классу. С другой стороны, чтобы отобразить в том же UI текущее состояние, тебе нужно обратиться к конкретному классу anyway.
Есть UI, который отображает никнейм игрока. В OnEnable отображаем текущее значение: var playerService = Context.Resolve<IPlayerService>(); nicknameUi.text = playerService.Nickname;
А потом привязываемся к событиям: playerService.NicknameChanged += ...; playerService.NicknameChanged -= ...;
>>747187 Они-ж теперь акциями торгуют. И чтоб цена шла вверх надо постоянно создавать инфоповоды "смотрите какую охуенную фичц мы запилили", а после на эту фичу уже всем насрать.
Прикрутил анимацию поворота к персонажу, при запуске игры персонаж нормально крутится, но во время поворота у него в компоненте transform значения в rotation не меняются. Как сделать, чтобы менялось там тоже?
иногда вот играю в старые игры, годов так 2000-2005, которые реально интересны, и думаю, блин, игру с такими простыми моделями, текстурами, примитивной физикой и я один могу сделать за годик-другой. но вот что-то не делаю
>>747066 Насчёт финансирования. У юнитеков есть менеджеры с которыми можно договориться. Условия под каждого свои. Нам они выписали приличный бонус на юнити адс. У них есть русскоязычные менеджеры.
Поясните за процедурные анимации в юнити, как с ними дела? Есть аналоги уечевского control rig? Что с IK солверами, физическими анимациями? Можно ли пилить продвинутые процедурные анимации с функционалом из коробки, без покупки ассетов?
Пытаюсь прикрутить объемные воксельные тайлы из MagicaVoxel в юнити через TileMapEditor и TileMapExtras, которые позволяют делать тайлы GameObject'ами. Мб есть у кого нормальный гайд на это всё дело? Нашёл только у Emerald Powder на ютубе, но не особо у меня получается даже по его коду
>>746050 >Господа, пользовались такой услугой, как код-ревью? Ожидание : обзор архитектуры с указанием на неочевидные проблемы и подводные камни. Реальность : доёбки до нэйминга и орфографии.
Бесполезная хуита этот кодревью. Самый лучшщий способ отревьювить свой код - посмотреть на него через месяцок, другой.
>>747540 > Самый лучшщий способ отревьювить свой код - посмотреть на него через месяцок, другой. Два чая анону, также в процессе написания кода регулярно спрашиваю себя, а не делаю ли я хуету. Если ответ - возможно, то переписываю
>>747547 это значит что при загрузке сцены надо все снова двигать туда где было все закрытые двери открывать, все собранные бобы убирать, всех убитых гоблинов удалять (или спавнить труп) и тд
не проще было бы перепечь сцену с новыми данными и все?
>>747548 >Если ответ - возможно, то переписываю При этом важно не забывать, что это всего лишь инструмент. Я как-то посмотрел исходники Террарии, там вот разработчики не парились. По 10-20 тысяч строк классы. Все предметы и их логика были в одном единственной классе. Всего было где-то 10 игровых классов или меньше.
Сейчас достал один ассет, ассет охуенен, в нем 90% для моей игры уже сделано (при том что сложной игры - песочницы-выживалки, а не гиперказуала)
Смотрю код... Короче, если бы Сакутин его увидал, его ор бы услышали на марсе. НО!!!. Есть две большие но:
- код читается легко - код делает свою работу
Я это к чему - меня реально удивляет вся эта мода дрочить на какие-то там стандарты, дрочить на бесполезную инкапсуляцию (извиняюсь спросить - что в коде может взять и само поменять переменные без программиста?)
Вот в восьмидесятые, девяностые и даже нулевые никто на это не дрочил - а столько великого софта было написано, и мы до сих пор пользуемся их трудами. А все эти Сакутины - что они сделали? Говноказуалки для андроида? Это вот ради этого надо так дрочить на код? Для очередной мобилки которую пилят за неделю, продают за 3 месяца, а через год забывают про ее существование?
>>747583 Не знаю, о чем ты. Я вообще из твоего поста узнал о нем, а далее любопытство сыграло злую шутку. Открыл рандомнвй видос из гугла и понял, что это бог во плоти. Ну как у него не взять в рот?
>>747578 >дрочить на какие-то там стандарты, дрочить на бесполезную инкапсуляцию Опытным программистам такие детали помогают. Если я вижу инкапсулированные поля, то понимаю, что они извне не изменяются. По крайней мере напрямую.
Если я использую какой-то сервис в игре, то мне нужно как-то запускать игру в редакторе с фейковым сервисом. Для этого я использую интерфейс, который описывает сервис и пишу две реализации. Одна реализация используется в билде, другая в редакторе.
>>747588 ва первых - за 2 геткомпонента подряд нужно тупо расстреливать. написать var image = getcomponent<image>() должно работать на уровне рефлексов
ва втарых - правильно будет ввести поле куда или назначать имедж в инстпекторе или получать его в старте
ва третьих - так как эту кнопку будут нажимать раз в пятилетку буквально - никакого влияния на производительность тут не будет
>>747586 >Если я вижу инкапсулированные поля, то понимаю, что они извне не изменяются Что тебе дает это понимание? По факту это одно из мнимых аргументов, которое придумали чтобы оправдать очередную дрочку, тогда как в реале оно нах не надо. Есть такая категория аргументов, которая на бумаге красиво звучит (раньше кстати это называли методом черного ящика, а сейчас вот инкапсуляцией переобозвали)
Например в си вообще почти всё было в глобальных переменных. Никому это не создавало никаких сложностей, все операционные системы на си, почти все драйвера на си. Твоя мобило-дрочка в 20к строк даже близко не стоит рядом с такими монстрами по объему кода. Так почему тебе сложно читать свой код?
На пикче если что - код Кармака из дума3 (теже самые глобальные переменные, при том что Кармак уже пересел на с++ к тому времени)
>>747593 >за 2 геткомпонента подряд нужно тупо расстреливать Ты скОзал? Понятно что это не эффективно, и можно реализовать лучше, но доёбываться нет смысла, зная какой уровень у программиста.
>правильно будет ввести поле куда или назначать имедж в инстпекторе Можно придумать множество реализаций, и это причём не самые оптимальные с точки архитектуры.
>так как эту кнопку будут нажимать раз в пятилетку буквально Называется сначала посрали, а потом убрали, с этого и надо было начинать.
>>747588 Как уже ответили вариантов много что сделать можно, но если всё устраивает и работает, и что главное понятно, то забей. Не забывай что надо сделать игру, а не дрочить на строчки кода. Пожалуй что действительно важное, это не суй говно в апдейт, и не инстанси каждый кадр.
>>747597 ога, я скозал. если человек привык писать вот так то и дальше он будет писать так же. чем дальше тем сложнее переучиваться, и если не бить по рукам за вот такой нафик ни на что не влияющий на плохой код то потом он у тебя в апдейте для кучи объектов будет по нескольку раз геткомпонент вызывать, загнав фпс в ноль на ровном месте
>>747598 Хочешь я тебе одним предложением скажу божественную формулу программирования? Слушай:
Да начни уже писать этот чертов код; не дрочи на качество, просто пиши код
Не благодари (даже без иронии, фраза вроде простая, лулзовая, но многие ее долго не могут понять... А вот когда поймут, тогда все сразу станет на свои места)
>>747594 Двачую, тоже начинал с крестов на глобалках все делал, где надо указатели пердолил, борьба за каждый байт, начало нулевых, вашу мамашу! Эх, были времена...
>>747586 Маня, стандарты, инкапсуляции, фелляции и прочий онанизм помогает только в групповой дрочке, когда несколько макак кодят, чтобы зверьки тратили меньше времени на понимание гоанокода друг друга и ничего друг у дружки не поломали ненароком, прижуманы все эти стандарты и инкапсуляции. Если же ты единичная макака и дрочишь жопу сам себе, то можешл смело класть хуй на все это и писать так как лично тебе удобно.
Те кто пропагвндирубт соблюдение неких стандартов, по сути отрабатывают заказ кабанчиков-капиталистов, чтобы к ним на галеры приходили уже подготовленные рабы с развальцованным очком под нцжный диаметр бутылки.
>>747598 >>747599 Пчелики, раскрою страшную тайну, мы тут игры делаем, а не дрочим на код, парадигмы и еще кучу заумных слов. Вот говоря обычно анону дрочи код, а не делай игры, он подрочит, почитает, и забьёт потому что слишком сложна и долга, а ему зачем это? Денег не приносит, лишь время тратит как и само существование. А вот даже если взять пример яндере дева, с его адским кодом, то он сделал пусть и из готовых ассетов игру, и она даже запустилась, и в неё, о ужас, даже играли!!
Короче посыл для всех анонов которые не работают в профессиональной сфере разработки или на дядю, шлите нахуй всех кододрочеров, это лишь пустая трата времени если вы не планируете строить свою жизнь на разработке. Всё само придёт, постепенно, делая маленькие игры, начнёте понимать и видеть что где-то совсем плохо, и сами же заинтересуетесь в своих траблах, не слушайте безигорных петушков.
>>747603 Чел, там нет проблем с кодом. типичный продакжен код. Бери любой проект - там будет таже хуита - советую поинспектить решарпером какие-нибудь топ игры на юнити.
Просто люди ищут к чему прикопаться. Проблема яндере симулятора в чем угодно, но не в коде. Там скорее проблема в аутизме яндередева, так как вместо нужных вещей он прогает очередную прическу (так-то он реально работает, а не пиздит, просто слишком закапывается в мелкие детали вместо общего геймплея)
>>747616 >Чел, там нет проблем с кодом. типичный продакжен код. Вот тут не соглашусь, код у него явно двачерский, куча нагромождений, ненужных и вредных. Полное отсутствие архитектуры, всё говно тянется и связывается друг с другом. Не знания постройки архитектуры, пусть и примитивной. Любой опытный кодер бы сделал лучше во всех планах.
Но это не отменят того факта что он сделал всё таки своё подделие.
>>747613 >По сути есть чем возразить-то? Есть теория, а есть жизнь. Не факт что шарит кстати. Ведь на его курсах слишком примитивные, можно сказать академические примеры, специально созданные для этого
Было бы интересно посмотреть на его код в каком-нибудь серьезном и реальном проекте - но это как раз увидеть нельзя
>>747617 >Любой опытный кодер бы сделал лучше во всех планах. Чтобы уметь в архитектуру - нужно сделать кучу подобных проектов. Ни из какой книжки ты не получишь эти навыки. Также для качественной архитектуры нужно качественное тех описание, не все программисты в принципе это могут сделать (поэтому это вообще отдельная профессия). Без этого описания ты не сможешь сделать качественную архитектуру, так как просто не знаешь что ты будешь делать.
Не, сначала ты можешь сделать то что тебе кажется красивой архитектурой, а через полгодика понадобится внедрить новую фичу и вся твоя архитектура накроется тазом - про это была статья на хабре если что.
То что ты думаешь что архитектура у тебя хорошая - это всего лишь фантазии, так же как джуны думают что их код самый идеальный и хороший. Либо ты делаешь одни и теже проекты десятки лет и просто надрочился.
>>747619 Слово 'Опытный' ты специально проигнорил? Об этом и речь, челик который участвовал в разработке серьёзных проектах на должности выше подай/принеси.
Речь сейчас идёт об одиночных инди играх, которые пилятся в соляную прогерами, и лишь нанимают арт/музыку на аутсорсе. Там ты можешь сам, своими силами переписывать/переделывать архитектуру. А если ты не понимаешь что делать, не имеешь опыта, то выйдет как у яндере дева(Но в целом тут как уже писали дело в том что он аутист ебаный, за 7лет сделать такое и не переделывать, нужно быть дауном или похуистом).
>То что ты думаешь что архитектура у тебя хорошая - это всего лишь фантазии Опять же речь о соло проектах. Если ты хорошо ориентируешься в своём проекте, и через час копошения в скриптах не забываешь что-куда, то всё ок. Ну и главный фактор для конечного пользователя шоб не лагало и не вылетало. Чек? Значит всё гуд, не трогай и не трать время на пустую оптимизацию и рефакторинг.
>так же как джуны думают что их код самый идеальный и хороший Не пизди, это где таких кадров находят? Ниразу не встречал таких, все прекрасно понимают что ниОчень, и не выёбываются. Разве что бесплатно если с челиками работать могут наверное бычиться.
>>747621 >Слово 'Опытный' ты специально проигнорил? Но мы-то говорим об яндередеве, а не Кармаке или Суини. Каким местом он опытный чтобы тредовать от него идеальной архитектуры?
>>747621 >Там ты можешь сам, своими силами переписывать/переделывать архитектуру Только пока время разработки таких игры не больше года. А если твой проект в разработке больше 7 лет? За это время даже кодинг сто раз изменится. Яндере начинал когда юнити еще даже не был моден, не было никаких толковых курсов, а в официальных уроках от юнити тебя учили все поля делать публичными потому что.
>>747622 Слушай, мне всё больше кажется что ты толстишь.
>таких игры не больше года Ну мы как раз об анона играх. Они не делаются годами как маняпроекты. Тыж сам наверное знаешь что игру как у яндере дева можно с нуля за пару недель написать? И вся сложность именно в графике и других ресурсах которые кодеры обычно ленятся либо не могут родить в нормальном качестве.
Еслиб этот чухан хотел, он бы уже давно, САМ, именно что без посторонней помощи от студий или людей всё бы сделал, я уж молчу про то что, если ты кодишь и лазишь в юньке каждый день хотяб по 3-4 часика, сам во всём разберёшься.
Про проекты долгострои аля песочницы или патреоно доилки я не говорю, вот там всё сложнее.
пора завязывать этот пустой трёп неочём, яндере дев это позорище от мира кодеров. К тому же необучаемый и чсвшный.
>>747624 >Тыж сам наверное знаешь что игру как у яндере дева можно с нуля за пару недель написать Да, а еще дварффотресс можно за неделю запилить...
нет, нельзя. Это только так кажется. То что там сделали свои клоны яндерки за неделю - так они делали имея уже готовую игру для примера (да еще и код брали из нее же - это конечно вообще шедевр)
Симуляторы вообще сложно делаются. У меня в виш листах много инди проектов-симуляторов - все они долгострои. Даже не помню, был хоть один симулятор который бы сделали за год или меньше
Вот чисто рандом игра - Forager. Так если посмотреть - примитивная графика, примитивный геймплей - что там делать? Только вот автор на нее три года убил, так как где-то вроде в 2016 она была на какой-то конкурс. В 2017 году прошла гринлайт, в 2019 только опубликовалась в стиме Хотя играбельна она была еще в 2016-2017 году, но два года до стима ушло на допиливание мелких деталей
Это как там говорят - последние 10% игры будут занимать 90% времени разработки
Парни не пойму какого хуя The animation state Walk could not be played because it couldn't be found! Please attach an animation clip with the name 'Walk' or call this function only for existing animations. UnityEngine.Animation:Play(String) PlayerMove:Update() (at Assets/Scripts/PlayerMove.cs:41) Он не видит анимацию, но я её пять раз добавил через Анимации, аниматором я пока не пользуюсь, для меня сложно. Я и пробовал дублировать анимации персонажа, настраивал легаси, дженерих и гуманоида. Я читал документацию но там только про аниматора и стейт машин, повторяю туторы слово в слово и нихера.
>>747652 Ну чувааак, заканчивай уже толстить. Я писал именно про игру от яндере дева, а не про симуляторы другие. Вот рили, если не зелёный, посчитай и посмотри механики игры на момент выхода +- пол года, и подумай, сколько тебе заняло это бы на разработку? Игра приметивишая, и ладно бы графика была своя, можно было бы простить, но нет, всё готовое. Контроллер и осмотр час делов, юишку за пару часиков, нпс с листом навигации это час(не забываем то что в юнити всё из коробки и даже не надо париться, лишь зоны авто сгенерировать и всё), что там еще? Хз, это говно делается за пару недель, не знаю что ты там долго собрался реализовывать. Вот в последних билдах, да, механик он уже подвёз побольше, нужно будет поболее времени, но сути не меняет.
чтобы получить из него значения ip, port, serverId ?
я написал такую конструкцию: void Lobby() { uint xa = 8; ushort xe = 8; Steamworks.SteamId xu = 8; // "=8" т.к. компилятор требует присвоить значение var s = myLobby.GetGameServer(ref xa, ref xe, ref xu); Debug.Log("" + xa + "" + xe + "" + xu); } в итоге смог получить три 0, но чет кажется это совсем не то и я просто криво его вызвал
>>747688 но зачем? там из фишек - трансляция в шарп код и его компиляция в юнити стеки что дает производительность собственность шарп кода. почему не писать шарп код?
Есть где вменяемая документация по Unity DOTS(ECS)? Я понимаю что оно в глубоком превью уже второй год, но блядь официальная документация не объясняет ничего и состоит на 90% из сепулек. Гайды на ютубе не поясняют воопше ничего.
>>747695 так я и не делюсь мнением, я спрашиваю нахуя оно воопше нужно когда любой алгоритм сложнее "взять значние, произвести элементарную операцию, вернуть результат" превращается в запутаный клубок из узлов и стрелочек?
>>747709 Блять, как вы меня заебали, надменные уебаны, идите нахуй из этого треда. До переката 1-2 шиза пукали такую хуйню раз в неделю в тред, сейчас листаешь и диву даешься - у одного движок виноват в том, что ебущийся в глаза уебан не может найти как редачить компонент, другой ошибку не в состоянии загуглить и на любой ответ огрызается, ты, собака ебаная, мало того что мог загуглить свой вопрос, а не писать свой высер сюда, еще и огрызаешься. Как вы меня заебали, надеюсь батя вас все еще пиздит, уебаны несовершеннолетние
>>747714 >мало того что мог загуглить свой вопрос, а не писать свой высер сюда, еще и огрызаешься Прими таблетки шизик и перестань отвечать на посты своими фантазиями, о которых тебя не спрашивали. Тебя ебать не должно, зачем мне, я тебя не спрашивал, что лучше, а ты высрался и начал доказывать, что шарп лучше. Мне похуй, понимаешь? Не в этом дело. То, что ты не можешь пройти мимо вопроса - исключительно твои проблемы.
>>747709 а ну тогда все просто. болт 2 никогда не выйдет. потому что болт воопшем и болт2 в частности перестал существовать. юнити выкупило проект и переименовало в вижул скрипт, что позволило отказаться как разработчикам болта так и собственно юнити от любых обязательств по болту.
>>747715 Во первых, я не тот анон, что тебе отвечал, во вторых "Ты м-м-мог бы просьто не отвецать" не оправдывает то, что ты еблан, не можешь открыть гугл и поискать ответ на свой элементарный вопрос, а вместо этого приходишь сюда и начинаешь срать
>>747718 Пока что срёшь тут только ты своей разорванной жопой. Что ты сделал? Ты высрался, как тебе надоели мамлолетние дибилы и всё. Очень полезная информация. Молодец, ты определённо лучше.
>>747719 >виноват не я, потому что я малолетний дебил, а ты потому что тебе это не нравится Я учу тебя, еблана безмозглого, что вопросы нужно решать самому, особенно те, что решаются вбиванием оного в поисковик, чтобы ты сюда больше не приносил свой рак. И хуй с ним с твоим вопросом, но ты приходишь сюда, задаешь вопрос, а потом начинаешь вести себя как царь горы и нахуй всех посылать, повезло тебе, что я не мод
>>747721 Ты строишь из себя тут умного и взрослого, но так и не понял, что не нужно высираться на темы, которые тебя не просят. Неужели не понятно? У тебя с головой проблемы что ли? Я задал конкретный вопрос в тред, пришёл умник и начал мне писать "а зачем тебе это, делай по-другому". Блять. И меня после этого ещё оскорбляют. Давай приведу тебе пример, чтобы ты понял, как это выглядит: - А как пройти в библиотеку? - Зачем тебе библиотека, используй интернет и электронные книги, они лучше, лол.
Подскажите, как правильно поворачивать дочерний элемент в нужную сторону? Я бы хотел уметь крутить этот выделенный элемент (голову) в нужну стороны. LookAt не работает, башка крутится по странному.
>>747751 >>747721 Зумер и бумер сцепились, словно Давид с Голиафом. Это, конечно, классика, но, уважаемые, не могли бы вы не сраться, а ответить на такой вопрос: взяли бы вы в рот у романа сакутина? Вот прям четко, ясно и по делу, а то только тред засираете.
>>747787 во-первых имеет смысл ибо что-то сложное в визуальном редакторе превращается в спагети код визуально. тебе все равно придется учится программировать и c# не самый плохой язык для этого
во-вторых зачем покупать плаймейкер если есть визуал скриптинг из коробки, который переименованный болт, который собственно и был лучшей альтернативой
>>747790 а че там пытаться? из разработки там простейшая логика, которую можно реализовать даже на основе двд-формата, вон школьники в нулевые без проблем справились. все ложиться на катсценки, это тебе в /mov/
>>747751 Зумер пытается маневрировать. Тут >>747689 у тебя анон нормально поинтересовался зачем тебе нужен болт. А ты начал усираться "тебя никто не спрашивал кококо". И после этого кто-то будет нормально отвечать на твои вопросы? Научись вести себя в обществе.
Жесть. Луч кидается из объекта А в объект Б. Если объект Б двигаетя быстро, то примерно 1 из 10 луч промахивается и улетает мимо, в пустоту. Переносил код в FixedUpdate - тот же результат. Проблема решилась увеличение радиуса коллайдера объекта Б. Это вообще нормально? Или луч ни коим образом не должен промахиваться?
>>747950 да хоть непосредственно на канвас или другую кнопку - глубоко однохуйственно. собственно панель от имеджа отличается только тем что по дефолту принимает текстуру как 9-слайс
Посоны, как отследить "NullReferenceException: Object reference not set to an instance of an object"? Удалил со сцены все объекты, все равно вылазит. Щелкаю по ней - нихуя не происходит.
>>748198 Попробуй перезайди в юнити, иногда бывает такое после апа проекта хотя сомневаюсь, что ты апал, но может помочь Вообще если это Graph, то он возвращает Null если игра не запущена, так что если у тебя какой-то скрипт с ExecuteInEditorMode и запрашивает Graph - оно всегда будет null
>>748200 >Попробуй перезайди в юнити, иногда бывает такое после апа проекта хотя сомневаюсь, что ты апал, но может помочь Обновлял пакеты, возможно из-за этого, спасибо
>>748246 Я так делал, хочу по научному. Нашел, вроде, правильный вариант, используя public void OnPointerDown(PointerEventData pointerEventData) Но вся суть в том, что придется еще один скрипт делать на родительском объекте, чтобы отслеживать клик по нему.
>>748257 Эта хуйня срабатывает только по клику на объект, на котором она висит. Т.е. его придется вешать на все абсолютно все объекты, присутствующие на экране, чтобы закрыть маленький тултип. Пиздец. Как реализовывают закрытие окошек на телефонах?
Как остановить движение объекта после того как заставил его двигаться при помощи characterController.Move() ? Вызываю characterController.Move(Vector3.zero), ему похуй
>>748276 Я делаю маленький тултип, как подсказка, а не целое окно. Хочется, чтобы при клике на него или вне его он закрывался. А что, если этот клик был по кнопке? Она же не сработает и пользователь подумает, что приложение - говно. Я, допустим, сам так буду думать. Потому что второй клик - это очень плохое юзабилити.
>>748279 >Хочется, чтобы при клике на него или вне его он закрывался Самое простое - в Update проверять Input.GetMouseButton(0). Это будет работать и с мышью, и с тачскрином.
Я не пойму это баг юнити или прикол блендера? Почему при импорте обычного куба у меня полигонаж удваивается? Я читатал, что это вроде из-за марк сим в блендере, когда я помечаю грани куба перед развёрткой, так что эе мне теперь не разворачивать модели? Тогда я не смогу нормально красить текстуру, а если процедурную текстуру кинуть, то в юнити не понимает шейдеры из блендера. Как быть?
>>748348 Скорее всего, марк сим создаёт вспомогательную геометрию, и скорее всего, тебе при экспорте надо проверить галочки и убрать галочку вспомогательной геометрии. Чисто с дивана предполагаю.
>Controller не реагирует на силы сам по себе и не отталкивает Rigidbody объекты автоматически. >С другой стороны, если вы хотите, чтобы персонаж игрока подвергался влиянию физику, то возможно вам было бы лучше использовать Rigidbody вместо Character Controller.
Если тебе нужно реализовать физику сферы, то стоит тогда использовать ригидбоди.
Дa нaчни уже писaть этот чертов код; не дрочи нa кaчество, просто пиши код
Hе блaгодaри (дaже без иронии, фрaзa вроде простaя, лулзовaя, но многие ее долго не могут понять... A вот когдa поймут, тогдa все срaзу стaнет нa свои местa)
>>748413 Гравитация не действует на чарактер контроллер. У меня вот такой код используется. Вместо своей "gravity" можешь использовать Physics.gravity.
>>748414 Ну что за говнокод, блять, чудо что у тебя вообще получилось открыть юнити с такими умственными способностями. Если лень читать документацию и старфлов, то хотяб на ютубе ролики от индусов смотри...
>>748425 >Ну что за говнокод, блять, чудо что у тебя вообще получилось открыть юнити с такими умственными способностями. >Если лень читать документацию и старфлов, то хотяб на ютубе ролики от индусов смотри...
>>748427 Что за боевые кратинки? По делу есть что сказать? У меня жопа взрывается осознавать что кто-то на полном серьёзе не может реализовать функцию в пару строчек кода, это просто новый уровень долбоебизма.
>>748428 Что-то мне кажется, что ты тролль из движкосрачей. Судя по твоим высерам и нападкам. Вот этот простой код заставляет падать сферу. Как он может у тебя не работать - я хуй знает.
Вопросы? В любом из этих 3 мест ты найдёшь инфу как реализовать в юнити 99.99% вещей которые тебе нужны и лишь что-то супер сложное и комплексное у тебя не получится, но такое ты и не будешь делать, сукаблять.
>>748432 Нет, я не тролль, перешел на rigidbody.velocity и все норм стало (держу в курсе). И где ты увидел у меня нападки? Про чистоту кода другой анон пишет, мне вообще некстати плеваться желчью в анона который пытается мне помочь
>>748437 Приподнял, он упал, но все равно не полностью, как и раньше. Похоже это фича character controller`а . Посмотри у себя, мб тоже остается такое расстояние от меша до поверхности.
Какой способ обработки событий лучше выбрать? Я не смог понять, как использовать метод "Invoke Unity Events", а простой "Send Messages" мне не подходит, т.к. я хочу вешать скрипты на дочерние сущности (например, камера со своим скриптом). Реализовал через "Broadcast Messages" - выглядит просто и удобно. Нормально или это слишком тяжёлый метод? И можно ли создать несколько Player Input, чтобы, например, второй отвечал за гуи, или гуи должен создаваться внутри "игрока"?
>>748590 Зачем тебе кряк? В новых версиях даже чёрная тема бесплатна.
>>748594 >простой "Send Messages" Никогда и нигде не используй, оно медленное. >И можно ли создать несколько Player Input Да, но нет. Оно просто не нужно. Есть же экшнмапс. Единственная проблема, с которой я лично столкнулся, так это то, что нужна отдельная проверка при вводе, что у нас активно - игра или гуй. >Какой способ обработки событий лучше выбрать? Посмотрел свой код, кекнул с выбора анона, мой выбор - не использовать GameObject components вообще.
Блять, а юнити вообще дружит с простейшей математикой из школьной программы 2го класса? Почему оно вместо реального количества процентов выдает то 0, то какие-то не те цифры.
>>748755 Cпасибо. Но, как оказалось, это все равно бесполезно, у меня неправильно идут сравнения. Есть отображение шкалы опыта от 0 до 100. Есть левел. Есть опыт, требуемый для лвл апа, с каждым следующим лвлом требуемый опыт растет на рандомное значение. Как сравнивать шкалу опыта от 0 до 100 на то, меньше ли она требуемого опыта? Он может быть и 228 и 1488.
>>748761 >с каждым следующим лвлом требуемый опыт растет на рандомное значение В чем проблема записывать это рандомное значение в переменную и потом сравнивать текущий опыт с ним?
>>748765 Да оно не рандомное, а берется из массива . Оно присутствует: levelSystem.GetExperience(). Я хочу сравнить число от 0 до 100 с ним. Хуйня в том, то оно обычно больше 100
>>748770 По-моему проще так сделать: сравнивать переменную с текущим опытом и нужным до лвл апа пусть хоть она и из массива. А на шкалу выводить процентное соотношение текущего опыта, где 0% - необходимый опыт до апа предыдущего уровня, а 100% - необходимый опыт до апа следующего уровня.
>>748771 А зачем сага? >>748773 Сделал с помощью соотношения текущего опыта с опытом, требуемым для апа( из массива). Как же я попотел, сегодня на работу не пойду.
>>748959 Можно пиратить, только они обновляют защиту примерно раз в месяц-два и приходится изьебываться. Раньше пользовался утилитой, которая чистила реестр и можно было раз в месяц брать себе фри триал, спустя время заебался и переехал на лицензию, не жалею ни капли
Сап юнитач, нужна помощь. Имеется меш который раскрашен через вертексы. Но проблема начинается если таких мешей становится больше 5(а мне их надо минимум 30). Насколько я понял,чтобы не лагало,надо уменьшить количество вертексов для меша,но тогда другой вопрос:как мне перенести ту же самую раскраску на тот же меш, но с уменьшенным количеством вертексов? Мой план : из раскрашенных вертексов делать шейдер и потом натягивать его на уменьшенную по вертексам копию меша. Но как делать этот шейдер? Использовать для раскраски меша блендер/збраш и тд не вариант (по личным причинам). Если есть более просто реализация то буду рад почитать как сделать проще
>>748940 >уваки, я ненавижу visual studio Дебил, что ли? Студия это самое замечательно, что выпускали майки. Есть ещё круче это visual studio Code, это вообще маст хев и годнота.
Ку! Изучаю C# и на данном этапе свободно(как я думаю) владею циклами, массивами, условиями, методами и тд.. Нужно ли учить ООП для геймдева? Или хватит основ и переходить к изучению движка? Спасибо за ответы! <3
>>749149 Ку. Единственное что тебе надо для создание своей игры это смотреть туториалы на ютубе. Прям гуглишь как сделать к примеру гоночки в юньке, смотришь видосик, качаешь ассеты, повторяешь, и чуть позже сам можешь лепить что душе угодно.
>>749193 технически это будет одна и та же операция, только вместо ссылки на объект источник в стек будет ложиться this. разве что предполагается что значения будут меняться и тебе нужно именно старое значение. ну и для удобства можно ввести локальную переменую в методе. что-то вроде что бы не писать каждый раз SomeCashedComponent.SomeField раз написать var value = SomeCashedComponent.SomeField; и юзать валуе. я бы мог сказать что технически операций меньше, так как сразу берется валуе, но фактически компилятор и сам это оптимизирует вводя локальную переменную в подобном случае
Очень сильно затупил на простом моменте освоения юнити, а именно как сделать так, чтоб если я менял скрипт в одном экземпляре префаба, оно не дублировалось на все остальные тоже?
>>749260 отвязать объект от префаба - пкм на нем в иерархии. собственно обычно предполагается что префаб - образец, посему изменения применяются ко всему
дурацкий вопрос про гет и сет: есть переменная x public class Person { private int x = 8; public int X { get {return x;} set {x=value;} } } меняю ее значение из другого скрипта, таким образом: Person p = new Person (); p.X= 100; (в итоге она становится равной 100 и в первом скрипте и во втором, я проверял)
но потом я пытаюсь считать ее из третьего скрипта Person p = new Person (); Debug.Log(p.X); и она по прежнему равна 8, что это за пиздец? как это работает, блеать на базовом уровне?
>>749391 Ни разу не знаю юнити, но судя по контексту ты создаешь новый экземпляр класса у которого ессно будут дефолты.
Чеготты ожидал? Что приватное свойство будет шариться на все экземпляры объекта? Тогда тебе нужен аналог статик в похапе, не в курсе, если такое в юнитях.
>>749391 new выделяет отдельный кусок памяти для класса и возвращает ссылку на него. далее все переменные типа Person которым присвоили эту ссылку будут иметь общие значения var p = new Person(); //выделили первый кусок памяти p.X = 100; var a = p; // a.X == 100 p = new Person(); // выделили второй кусок памяти p.X = 20; // a.X == 100 так как ссылается все еще на первый кусок a = p; // теперь a.X = 20 так как тоже ссылается на второй кусок. первый кусок проебался так как никто на него не ссылается и будет удален когда у сборщика мусора дойдут руки a.X = 50 // p.X тоже будет равно 50 так как оба ссылаются на один кусок памяти
посему правильный вариант будет получить в третьем скрипте ссылку на второй скрипт и оттуда получать именно ту персону что ты там создал. //сериалазайбл что бы можно было менять значения в инспекоре юнити. //{get;set;} автоматически создает скрытую приват переменную для вот таких простейших случаев. // [field: SerializeField] делает эту переменную видной в инспекторе [Seriazable] public class Person { [field: SerializeField]public int X {get;set;}}
public class Foo : MonoBehaviour : { public Person person; void Start(){ if(person == null) { person = new Person(); person.X = 100; } }}
public class Bar : MonoBehaviour { public Foo foo; Person person;
>>749406 >>749391 >>749399 Ах да. есть еще статики public class Person {public static int X {get;set;}}
теперь к иксу нужно обращаться через название класса а не переменную Person.X и она будет общей для всех персон. var p = new Person(); p.X - не работает.
но это в общем случае считается очень хреновой практикой и не рекомендуется к использованию. можно использовать в случаях если тебе надо хранить информацию общую для всего класса а не его экземпляра
Какой есть расово верный способ сохранения данных в андроиде локально? В тырнете куча способов описана, xml, json, сериализация, некоторый из них подходят только для конкретной ос. Чем в итоге в продакшене пользуются?
>>749425 Бля, там бред какой-то произошел, вчера все сделал, ВСЕ ПРОТЕСТИРОВАЛ, думаю круто, скомпилировал проект и закрыл. Сегодня открываю а там эта бредятина, просто один из ведущих скриптов перестал нахуй работать.
>>749432 Объект мейн камера, работает нормально. Единственное, что я заметил, это то что у некоторых скриптов на ней нет галочки активации/дезактивации. У меня там около 5 скриптов, на 2 галочка есть на остальных (в том числе нерабочем) нет.
>>749407 >хреновой практикой и не рекомендуется к использованию. можно использовать в случаях если тебе надо хранить информацию общую для всего класса а не его экземпляра
в том то и прикол. что все называют статитки хреновой практикой и при этом не дают внятного ответа на банальный вопрос, как изменить переменную в другом скрипте, чтобы эта переменная реально изменилась в том самом классе где она лежит, а не в экземпляре который нахуй не нужен по сути.
>>749436 То есть у тебя на пустом объекте висит скрипт со скажем debug.log("test") в апдейте и не работает. Ты уверен, что названия не перепутал? Для надежности зайди в скрипт через объект
>>749406 >посему правильный вариант будет получить в третьем скрипте ссылку на второй скрипт и оттуда получать именно ту персону что ты там создал.
пиздец костыль же, разве нет? неужели нет способа менять переменную в самом классе, чтобы она РЕАЛЬНО там менялась, кроме как вернуться к статикам, которые все хуесосят и у них есть минусы, это да это же настолько примитивная задача, что я просто в ахуе от отсутствия ее реализации
>>749444 >неужели нет способа менять переменную в самом классе Что ты имеешь в виду, говоря "в самом классе"? Класс - это шаблон, по которому создаётся твой объект (экземпляр класса). В примере, который ты изначально показал - у тебя два не связанных между собой экземпляра класса. Можно передать ссылку на первый экземпляр, вместо того, чтобы создавать новый, тогда это будет один и тот же объект. Либо статики - тогда экземпляр или его поле существует в единственном виде.
суть в том что такой проблемы не стоит. всё. ты берешь экземпляр класса и меняешь там переменную. классы и нужны ради экземпляров. кому нахуй нужна программа которая может работать только с 1 объектом? вот у тебя игрок например. он как бе один. почему бы его не сделать статиком? а потому что вылазит мультиплеера у тебя все на статиках. и ты просто не можешь сделать 2 игрока не заводя второй статический класс ровно с тем же функционалом и дублируя всю логику которая работает с игроком что бы она работала с двумя, тремя, сотней игроков. и этот пример скорее исключение. как правило у тебя множество сущностей даже одинаковых но со своими данными. например позиция объекта на экране. или хп врага. их бессмысленно делать общими.
собственно статики допускаются для заведомо общих свойств класса - например счетчик экземпляров класса для генерации уникальной идентификатора. повсеместно используется в том же юнити для всяких "менеджеров" которые рулят игрой, заворачивая их в синглтоны
>>749450 Я тебя понял, спасибо Но у меня еще есть вопрос по реализации: Допустим у меня есть простой скрипт с огромной кучей переменных, к этим переменным периодически обращаются самые разные скрипты, чтобы получить значение некоторых переменных и иногда изменить их(изменить, значит реально изменить, т.е. следующее обращение к этой переменной из любого другого скрипта будет выдавать новое значение этой переменной). Реально ли это сделать без использования статик переменных, у которых есть неприятная особенность не откатываться к исходным значениям при закрытии сцены в юнити? Т.е. при начале новой игры, их приходится откатывать в авейке к исходным значениям, что пиздец как не удобно из-за их большого количества
>>749441 >То есть у тебя на пустом объекте висит скрипт со скажем debug.log("test") в апдейте и не работает. Да, именно так.
Причем что сейчас заметил. У меня этот неработающий скрипт наследует от другого, в котором есть метод, устанавливающий одну хуйню. Так вот этот неработающий скрипт работает ровно до того момента, когда я этот метод из родителя вызываю.
>>749456 спасибо более-менее ясно, но у меня более практическая задача - здесь ее описал. >>749457 получается придется ебаться с кучей статиков, т.к. вменяемой передачи значений переменных между кучей скриптов в юнити не существует, добавлять их друг к другу в публичные объекты не вариант, т.к. их овердохуя
>>749457 самый простой вариант. упомянутый синглтон.
public class SettingManager : MonoBehaviour { private static shared; public static Shared { get { return shared; }
public int Score;
public int SizeX; public int SizeY;
private void Awake() { shared = this; } }
ну и установи порядок выполнения ему в свойствах проекта пораньше
все теперь ты можешь повесить на объект на сцене и использовать из других скриптов SettingManager.Shared.Score; причем (так это не полноценный синглтон) он удаляется при выгрузке сцены посему при следующей загрузке значения сбросятся на установленные
>>749458 >неработающий скрипт работает ровно Таки он работает. Предположу, что тот метод ломает скрипт. Попробуй вызвать метод через try и в catch выводи в логи ошибку
Аноны, как бороться с увеличением размера проекта на диске? Почему он вообще увеличивается, вроде никаких ассетов не добавляю, копошусь в скриптах, но он стабильно растет, блеать. Неделю назад добавил в проект Facepunch.Steamworks весом в 14 мегабайт, подключил в пару скриптов несколько библиотек из него.. И проект с 800 мегабайт сразу стал весить 1350. Пиздец какой-то, как это происходит вообще?!
Хочу защититься от примитивных способов взлома. Если на смартфонах записывать и считывать монеты и другую важную инфу в реалтайме с зашифрованного файла, будут проблемы с производительностью?
>>749464 Пиздец ты тугой, ссылку на объект передай туда где требуется с ним что-то делать, алсо зачем тебеивообще ооп, если ты собрался считывать и записывать значение напрямую? Ооп ради ооп?
>>750038 >ссылку на объект передай туда где требуется с ним что-то делать так и делаю >зачем тебеивообще ооп просто стало интересно, как оно должно быть по уму
>>750055 По уму, переменные внутри класса юзаются лишь классом и его потомками, на крайняк. А все взаимодействеи идет через методы класса. В эти пориджевые геттеры и сеттеры.
>>750056 Там ТРИ нойза. Каждый на своём риге. Через CinemachineFreeLook.Orbit. нельзя, нет в орбите такого компонента, как CinemachineBasicMultiChannelPerlin, я пробовал. Не знаешь - не лезь, пожалуйста
>>750087 Но сам поход через одно место. Получается если мне нужно управлять 4 кнопками менюшки, придется пихать уже 8 элементов в канвас, по отдельному геймобъекту для каждой кнопки.
>>750058 cinemachineFreeLook.GetRig(0).GetCinemachineComponent<CinemachineBasicMultiChannelPerlin>() и там меняй, что хочешь Передавай в GetRig 0, 1, 2, чтобы получать доступ к разным ригам.
>>750082 Если каждый раз читать и расшифровывать из файла - будет жопа, если держать расшифрованную копию в памяти и сравнивать с ней - то норм. Ну или можно асинхронно всё это делать.
Посоны, может сталкивался кто, хз как гуглить даже. Залил приложение в гугл плей, прогресс сохраняется в плауерпрефс. Потом обновил приложение и сохранения поехали нахуй. Обновилось вместе уже сохраненные данными, как будто я в бандл плауерпрефс залил. Даже если полностью очистить кэш и все данные приложения, после чего удалить его с телефона и скачать заново с плеймаркета, оно будет с сохраненным прогрессом.
Но, это все на одном телефоне, на другом скачивается из маркета без сохранений, как и должно быть. Где мой телефон хранит эти данные? Я пробовал очищать кэш, все данные, перезагружаться, и тд, один хуй качаю из плеймаркета игру с прогрессом.
Unity на практике. Создаем 3D-игры и 3D-миры Прочитал это гавно, не берите. Автор полный козёл, даёт примеры по платным и ассетам котрых нет в сторе. Всё поверхностно и однобоко, в конце получается игра где один персонаж может убивать мобов, всё млять.
>>750233 (Stat) - означает тип поля, это какой-то енам или класс, число ты туда при всём желании не запишешь из редактора. Ещё есть частая ошибка новчика, когда пытаешься менять значения в редакторе выделяя прямо файл скрипта - не делай так. Нужно в префабе или сцене на какой-то объект добавить скрипт, и уже там в редакторе менять значения и сохранять их в префаб/скрипт.
>>750264 RTFM! > On Android, PlayerPrefs are stored in /data/data/pkg-name/shared_prefs/pkg-name.v2.playerprefs.xml. Unity stores PlayerPrefs data on the device, in SharedPreferences. C#, JavaScript, Android Java and native code can all access the PlayerPrefs data. https://docs.unity3d.com/ScriptReference/PlayerPrefs.html
>>750461 Да ты не понял нихуя, я удалил все от приложения же с телефона. Но в общем я разобрался где они сохранялись внезапно на гугл диске в резервной копии телефона, из-за android backup хуйни
Вот и настал тот момент когда я перестал бояться и решил твёрдо и чётко вкатиться в геймдев. Скачал юнити так как проще только конструкт 3, наверное и встал вопрос, с чего мне собственно начать вкат? Какие туторы помогут лучше разобраться в интерфейсе? Какие книги стоит почитать что бы научиться кодить хотя бы как быдло? Насколько жизненно необходимо знать английский язык для этого всего я знаю онли расеянский? Я ощущаю себя слепым котёнком который потерялся в большом городе. Если кто то в этом треде может поделится советом/гайдом/etc. то буду премного благодарен. Заранее спасибо.
скачал хвалёные курсы сакутина с рутрэкера. ну это же пиздец. постоянные затыкии и запинки. видео построены по принципу - щас я быстро протараторю что тут где, и если вы полный новичок - вы нихуя не поймёте. и ведь кто-то за это платит деньги же...
>>750489 Спасибо за наводку на книгу, прочту на досуге то есть прямо сейчас. Насчёт ссылки, есть что то подобное на расеянском языке, так как я в английском практически ноль.
>>750495 >так как я в английском практически ноль. Тогда начни геймдев с изучения английского, хотя бы чтобы читать мог, серьезно, даже по юнити искать что-то на русском - боль
Кароче опять пошёл в книжный в другой не нашёл Unity в действии. Мультиплатформенная разработка на C#
Пришлось брать очередное unity полное руководство от Корнилова(книга гавно походу, взял только из-за бомбермена в 3д) и Разработка игр на Unity за 24 часа от Майка Гейга(очень на неё надеюсь именно уроки по юнити), короче как прочитаю - отпишусь.
>>750508 А по юнити думаю проще всего так: изучаешь основы C# прям основы, чтобы условия и циклы писать мог потом выбираешь простой жанр который хочешь сделать например раннер или платформер без излишеств и гуглишь "как сделать %жанрнейм% на юнити". Сначала делаешь все по туториалу, как более менее разберешься, начинаешь добавлять что-то свое
>>750513 Пускай хотя бы до классов дойдёт, ибо важно знать как сценарии между собой действуют. Чтоб можно было сразу с начала накатить синглтон static public ScriptName Script; (Уже в awake) = this; и раздать всем подписочки за 500 рублей в месяц.
Мб тут кто поможет. Хочу сделать следующую механику. Допустим у меня стоит дефолтный куб в нулевых координатах. Я кликаю в случайном месте и вплотную к кубику ставится еще один( с той стороны где я кликнул). После этого также только уже учитывая второй кубик. Единственное что придумал, это сделать на нулевой координате невидимую платформу, от курсора кинуть рэйкаст вниз. И от точки внизу кинуть рэйкаст к центру. Но звучит как очень сильные костыли. Мб у кого есть гайд или совет как сделать примерно такое. Соре за глупый вопрос, учусь как могу.
Юнитач, как перестать пытаться дрочить архитектуры и правильный код и начать делать игру? Я уже заебался, я пытаюсь дрочить безрезультатно всякие паттерны, придумывать дроченые системы, который я когда-то буду РАСШИРЯТЬв пустом проекте, лол и т.д., но я никак не продвигаюсь в прогрессе создания игры. Как пересилить себя и просто говнокодить игру? Я уже столько разных идей и проектов забросил из-за этого. Мог бы уже хоть пару игрулек для портфолио высрать, но нет же, надо сидеть и дрочить велосипеды и думать что мой код кто-то будет читать и использовать.
>>750643 Проблема в том что у тебя нет стимула НЕ говнокодить. Тебе нужна команда и тогда у тебя будет стимул использовать нормальную архитектуру чтобы другой разраб мог нормально свои фичи подливать. покажи кстати игрушки свои
Выглядит так себе, конечно, но если сюда подставить - работает if (Input.GetMouseButtonDown(0)) { RaycastHit hit; Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(ray, out hit)) { if (hit.transform.name == "Central cube") { print(GetHitFace(hit)); } } }
>>750643 Про дрочь на архитектуру... Хотел обсудить с аноном проект https://github.com/UnityTechnologies/open-project-1 Вот запарились юнитеки за архитектуру, во многом благодаря запросу от сообщества. Получилась объемная система со своими эвентами через скриптабл обжекты, стейт машина игрока, которую нужно через редактор настраивать... И мне это кажется всё лишним и неудобным. Хотя анонам которые хотят побольше "архитектуры" может и понравится.
>>750651 Я такие же системы обычно делаю, а потом забрасываю проект т.к. хочется сделать сложную игру, а контент 1 я тянуть не хочу. Нормально написано, хотя элементы говнокода проскакивают. Главное бездумно не копировать куски оттуда, конечно оно будет неудобным, если ты делаешь условного бомбермена.
>>750647 У меня чуть другая проблема, я кликаю очень далеко от куба, поэтому все что я придумал, это два рэйкаста. Но все равно спасибо, это поможет для второго.
У кого-нибудь было такое, что после обновления скриптов (сообщение от юнити вроде "вы используете устаревшие скрипты/методы, хотите их обновить?") игра блядь нахуй перестала запускаться? Уже в скомпилированном виде на телефоне, в редакторе то все норм. Попытался блядь гугл рекламу добавить называется.
>>750673 А что именно обновил? Если стороннюю либу то там очень легко все что угодно может пойти не так, 100% решение это удалить эту рекламу в ноль и заного поставить новую версию. Например у меня с кешем проблем было много, могут появлятся дубликаты манифеста (а тебе нужно их смерджить в 1 файл). В общем контекста мало что там у тебя
>>750695 Забей. Юнити не сохранил ключ приложения из адмоб, при том ничего мне об это не сказал. Оказалось это и есть причина. >огут появлятся дубликаты манифеста (а тебе нужно их смерджить в 1 файл). >В общем контекста мало что там у тебя Можешь подробнее про это рассказать? Что за манифест, где он лежит, как сделать его в одном экземпляре.
У меня есть две сцены: стартовая с менюшкой и основная с геймплеем. Собственно в геймплей идет переход из меню. Как сделать его более плавным и красивым? А то когда нажимаешь на кнопку "играть", по которой загружается сцена, все как будто зависает на несколько секунд, пока собственно сцена не загрузится.
Привет, а кто-нибудь постил скриншоты своей игры в #screenshotsaturday на дтф? Хлтел звпостить, но какие же там додики обитают, постят максимально унылую хуиту, при этом в 8/10 к скиинщоту оставляют пиздец какой чсв коммент, вымаливают добавление в вишлист. А другие додики лижут им яйца, мол, как круто и красиво. Это какой-то филлиал пикабу, пантеон скорбных разумом, ничего общего не хочу иметь с нми, скрин в итоге так и не запостил, да и вообще теперь захожу туда толь о чтобы поорать.
>>750759 manifest.json (если я правильно помню) в нем описываются настройки андроид приложения и его права. у меня была проблема когда несколько плагинов при билде должны смерджить все настройки в 1 манифест, но вместо этого я не мог найти пропавший файл либо создавались manifest.json и manifest(1).json и из-за этого ничего не работало. Как я уже сказал полная переустановка всех плагинов помогает, а апдейт версий может сработать, а может и нет.
>>750777 Гугл адсенс. В любом случае для мобильных игр без вложения какой-то суммы в пиар ничего путного не выйдет, если эта игра не жля портфолио, конечно, но тогда зачем вообще ее пиарить?
Посоны, туплю пиздец, как грамотно организовать систему уровней? Допустим есть 2д платформер с сотней уровней. Думаю запилить уровни с помощью tilemap, потом сохранить их как префабы и загрузжать по выбору игрока. Нормально или хуйню придумал?
>>750951 А в чем разница тогда между этим способом и просто префабом? Все равно же придется делать сотню пребафов уже созданных уровней чтобы передать их в скриптаблобжект. Или я туплю?
А как работает scalе и какие в принципе размеры надо делать у одного тайла? А то во всех туторах видел у всех все по единички, но на деле мылит и текстуры и всякие UI элементы по типу кнопок. Складывается впечатление, что этот момент интуитивен понятен, а я один дибил.
>>750972 >GameObject.transform - это скрытая ловушка с тормозами А чего скрытого, вроде же очевидно что оно геткомпонент вызывает. Как оно еще должно к компоненту обращаться?
Скриптаблобъект - это обычный класс а не какая-то магия. Сам скриптаблобжект можно или просто создать как любой класс через new, или установить в инспекторе юнити
>>750972 Сакутин не врал 6 лет назад, 5 лет назад юнитеки начали её кешировать и сейчас её можно использовать.
>>750958 Scale для UI и для обычных 3D компонентов работает немного по разному. Для UI лучше используй TextMeshPro для текста, а для текстур использовать Tile настройки, например sliced.
Будет ли второй вариант потреблять больше вычислительных ресурсов, чем первый? Как я понял, во втором случае будет происходить постоянная перезапись значения j даже если он уже давно стал false.
void Update() // вариант 1 { if (b == 7 && j == true) { j = false;} }
void Update() // вариант 2 { if (b == 7) { j = false; } }
Аноны, мб кто подскажет. У меня в апдейте данный код. Сначала запускается Луч от главной камеры через мышку и записывается координата удара луча о плоскость на нулевой координате. Далее в эту точку перемещается вторая камера. И дальше я пытаюсь сделать тоже самое, только уже луч от этой камеры в нулевой вектор3. Но почему то в последний Иф вообще не заходит.
>>751087 >>751102 Продолжу, в случае апдейта первый вариант на наносекунду будет быстрее, если бы была числомолотилка в каком-нибудь for то на наносекунду был бы быстрее второй вариант. В любом случае ненужное байтоёбство.
размутил левел в blender. разбираюсь с коллайдерами. есть ли простой способ накидать боксколлайдеров в блендере? не хочу чтоб у меня сложный меш был в коллайдере
Аноны, при навигации по сцене через пкм + wasd камера переворачивается. Пытался найти какую-то закономерность, но ее нет. Просто в случайный момент поворота камеры во время движения, она флипается по оси Y.
Если кто-то сталкивался с подобным, подскажите как зачинили пожалуйста.
>>751333 Не понял тебя. PlayerPrefs на винде - это просто записи в реестре винды. Я не знаю тонкостей, но скорее всего и нет вовсе никакого файла в папке с твоим билдом. На мобилках, ясное дело, все совершенно иначе, так как ОС совсем другая.
>>751354 Я к тому что многие говорят что сохранятся в плауерпрефс это мол хуйня. На мобилках это просто файл в папке игры. Вот интересно что плохого в этом
Аноны, есть вопрос по импорту 3д-моделей в Юнити. Как безопасно редактировать уже импортированные в проект файлы?
Я думал что в .fbx просто пересохранять и все. Но хуй там, сегодня добавил одну простую сетку к модельке, даже не изменяя ничего старого в иерархии и не редактируя риг/веса и после реимпорта файла у меня моба малость перекосило. Его палец уехал в район подмышки, лол.
Как избежать подобного? Может, работать напрямую с .max файлом в папке проекта?
Софт для моделей у меня 3Ds Max 2017, Unity 2018 LTS.
Ку. Делаю свою сраную игру с мультиплеер состовляющей. И прикрепил на свою голову БД. Кто нибудь может занимался php + mysql + unity? Есть пару вопросов. допустим есть таблица users. Как выбрать случайного юезра и отправить в юнити?
>>751400 понимаю, разве что генерироваться оно должно на сервере т.к. комп не знает количество строк. Но я похоже в синтаксисе не шарю. Какие команды я тока не пробовал.
Я сделал Scriptable Object и насоздавал его экземпляров, теперь мне надо хранить ссылки на них в некой коллекции, доступной статически во всей игре независимо от сцен. Я сразу подумал надо бы статический класс под это сделать, но статический не может быть MonoBehaviour, а если не делать его MonoBehaviour то и нельзя его на объект прицепить чтобы руками закидать все объекты в список в инспекторе. А если не делать статическим, то он не будет доступен статически, то есть надо будет руками ссылку на него всегда давать, а это пиздец.
Господа, здравствуйте! Я только вот начал осваивать юнити, хочу сделать текстовую ролёвку. Пилю интерфейс и столкнулся с проблемой. Два одинаковых (только текст отличается) объекта на канвасе расположены, но отображается только один из них. Помогите понять, что не так, пожалуйста!
>>751531 Ох, ёбвашу мать. Действительно! Спасибо, анончик, получилось. Скажи, а почему у Юнити такая странная ебанутая система скалирования? Показал на скриншотах. И нет ли какого-то режима "только 2D", чтоб не пришлось ебаться с Z-осью ?
>>751538 Вот интересно, что же я делаю не так? У меня есть курсы по Юнити, но там на 10 дней примерно делать 3D игры, чего я не очень хочу. Я довольно опытный кодер (бекендер на эликсире), поэтому пытаюсь разобраться самостоятельно. Были бы курсы по 2D Юнити только - смотрел бы за милую душу.
>>751538 >туториалы сперва. А есть нормальные краткие туторы по ui? Не говно типа "пишу инвентарь". А именно по любым ui - чтобы и про привязку и про разные разрешения экрана, и про верстку и т.д.
Анон, есть какая-нибудь минималистичная шпаргалка по шарпу?
Просто я прогал на других языках, и нет времени читать толстые книженции или лекции.
Что-то уровня - массивы создают так, структуры инициализируют так, классы копируют так, наследование делают так и т.д. То есть без стопятсотлишних слов, но полностью покрыт весь шарп
Это чтобы распечатать на бумаге и держать перед глазами, а то пишу код игры, нужно какую-нибудь вещь сделать, приходится идти и гуглить, потому что я знаю как это должно работать, но не знаю как в шарпе это пишется (по началу приходилось гуглить даже создание одномерного массива в шарпе, потому что не мог понять как скобочки писать (привык их писать после имени переменной, а не как в шарпе после типа))
>>751553 >и "C# for <language name> developer Мне надо именно как шпаргалку - я не запомню от одного прочтения. Взять теже массивы - я их не мог писать не потому что не знал как. Знал, все равно пришлось много раз гуглить пока окончательно не привык.
Думал написать сам - даже взял https://www.tutorialspoint.com/csharp/csharp_quick_guide.htm из оп-поста... Но и там много лишнего словоблудия, да еще и неудобная навигация.. Устаю, мозг начинает жаловаться "ну ты же это знаешь, не надо это писать"
>>751648 Вот поэтому скейлы и хуево использовать. Приведи все в порядок, начиная от канваса сделай везде скейл 1, лучше переделай, так будет проще. А чтобы растягивать вьюхи у них есть width height, или ставь им отступы.
Ребятушки, подскажите в юнити тащить данные с какого-нибудь сайта? Вот например сайт с погодой, как взять оттуда собственно показатели температуры? С сетью никогда не работал, даже не знаю, как подступиться
>>751700 Ключевое слово тут API, просто делаешь специальный http запрос к нужному сервису и обычно получаешь json в ответ. Пример api погоды: https://yandex.ru/dev/weather/ Альтернативный и ненадежный вариант скраппинг сайтов (site scrapping), лучше ищи api с нужным сервисом.
>>751708 Я дал ссылку на апи яндекса, и только потом проччитал, что для использования в юнити оно скорее всего платное, но потренироваться можешь. Если что-то серьезное делать будешь, то думаю можно найти совсем бесплатные альтернативы.
Как в ООП работать с EventData? Есть главный скрипт на родительском объекте, в нем инициализированы классы для детей, как в таком случае отследить клик по ребенку и прочие эвенты?
>>751762 Ты про SQL EventData или паттенр события/подписчик? Если про sql - юнити умеет в асинхронный код, правда нужно быть акуратным (как и всегда, работая с асинхронностью). В ассет сторчике есть бесплатные либы для работы с sql, можешь скачать что-нибудь.
Если про подписчиков - стандартное юнити решение через SendMessage не советую использовать т.к. оно медленно работает и если будешь его дергать в update - заметишь просадки FPS.
Я себе простенький класс написал и в своих "детях" использую такую систему: void Awake(){ GameEvents<SpookEvent>.On(SpookEvent.EventId, OnPlayerWasSpooked); } void OnDestroy(){ GameEvents<SpookEvent>.Off(SpookEvent.EventId, OnPlayerWasSpooked); }
Полет нормальный, через il2cpp тоже компилится как часы
>>751828 Я про IPointerDownHandler, IPointerExitHandler и т.д. SQL EventDatа - это делегат EventHandler, работающий с базой данных? >оно медленно работает В интерфейсе нет апдейта, кроме 2х лерпов в хендлере скроллов.
>>744256 Ещё фасадирование хорошо помогает в теории Да, некоторые компоненты могут быть маркерами, но в целом тема неплохая.
Я писал что-то вроде своих монобехов, юзал для каждого класса контексты. В общем и целом, профита и не дало, зато (возможно) более оптимизировано и выглядит гораздо кошернее
>>744234 (OP) Я не понял почему в юнити while постоянно зависают? Даже когда просто внутрь цикла засовую if else зависает нахер. Не работают && внутри условия while опять виснет, что за гамно?
Я про разраб юнити, но очень узкой специализации Graphics Engineer. До этого работал только на дядю, а теперь хочу перекатиться в индюшатник. Сразу споткнулся о недостаок знаний о дженерик геймплэй программировании. При любом расширении геймплэй в ширь код очень быстро превращается в кашу. Туториалы на ютубе особо не помогают, там обычно всё упрощено до предела и показывается как сделать какую-то одну механику. Мож есть какие нибудь книжки в стиле "архитектура геймплэй", только не для начинающих, а для продолжающих?
>>752377 Они говорят что у них это как-то само получается. Просто много писали. Я в принципе так-же учился, но я не хочу 5 лет писать геймплэй чтоб научится, хочу как-то побыстрее.
Учу юнити самостоятельно, без учебников, просто гуглю и тыкаю что мне нужно. И вот я дошел до создания и удаления файлов, и мне как-то не по себе. Есть какой-то надежный способ уберечься от полного стирания диска в случае (неизбежной, в моём случае) ошибки? Типа как-то ограничить область, куда скрипты будут иметь доступ?
>>752427 ну в теории система не позволит, собственно за этим мелкософт перенес в свое время бинарники в програмфайлс а настройки в профиль. но это такая, очень хлипенькая защита, снести не системный диск можно без проблем если ты не настраивал права а кто нахуй их дома настраивает?
используй Application.persistentDataPath как корень для игровых файлов. это в винде указывает на %userprofile%\AppData\LocalLow\<companyname>\<productname> в винде
Прошлый тред:
Официальный сайт: https://unity3d.com/ru
Документация: https://docs.unity3d.com/ru/current/Manual/index.html
Уроки: https://unity3d.com/ru/learn/tutorials
Форум: https://forum.unity3d.com/
Магазин ассетов: https://unity3d.com/ru/asset-store
UnityWiki: http://wiki.unity3d.com/index.php/Main_Page
На Unity сделано много замечательных игр - 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# можно узнать на интерактивных курсах здесь:
https://dotnetcademy.net/CSharp/Beginner
или в текстовом туториале здесь:
https://www.tutorialspoint.com/csharp/csharp_quick_guide.htm
Для изучения основ UnityScript выучи вначале основы JavaScript:
https://learn.javascript.ru/
Помни, что далеко не все элементы JS есть в US. Чтобы понять, в чём разница между этими двумя языками, прочти эту статью:
http://wiki.unity3d.com/index.php/UnityScript_versus_JavaScript
Помни, что тебе достаточно одного языка из двух и учить их оба одновременно не нужно.
- Движок
Если ты уже умеешь использовать язык, то можно приступать непосредственно к изучению движка. Крайне рекомендется купить/скачать книгу Unity in action (Unity в действии). В ней подробно описываются множество возможностей движка.
http://www.ozon.ru/context/detail/id/34792570/
Также посмотри на видеотуториалы с официального сайта:
https://unity3d.com/learn/tutorials
Если же ты не любишь видеотуториалы (или не понимаешь разговорный английский) и предпочитаешь текст, то посмотри здесь:
http://catlikecoding.com/unity/tutorials/
Тут крайне подробно описан процесс разработки и приведены примеры кода. Эти туториалы универсальны и описывают множество различных частей игры, от работы с текстурами до генерации карты мира. А вот в этом туториале описыватся разработка двухмерной игры с видом сверху:
https://www.raywenderlich.com/61532/unity-2d-tutorial-getting-started
Это будет полезно, даже если ты планируешь разрабатывать трёхмерную игру. Ни в коем случае нельзя обойти вниманием этот сборник туториалов:
https://noobtuts.com/unity
В нём подробно описывается процесс пошагового создания разных игр - двухмерных и трёхмерных.
Разумеется, все эти туториалы охватывают лишь часть возможностей Unity. Самый надёжный способ выучить Unity - это начать делать игру и по мере разработки гуглить непонятные моменты.
Шапка: http://www.writeurl.com/publish/zukmrogwv45ptyuseyol