Если у вас Андройд, то ожидайте это => При загрузке большой сцены на слабых устройствах , с вероятностью 99,9% будет вылетать приложение из-за большой потребности оперативной памяти. Нужно разделять загрузку сцены на этапы. Разрабатывайте игры с умом ❤
Охаё! на связи Rimuru Dev. Если вы повторили точ в точ за автором и у вас ничего не получилось. Сделайте следующее () => Там где вы жмякаете на кнопку перехода на новую сцену, вместо SceneManager.LoadScene(sceneName); воспользуйтесь SceneTransition.SwitchToScene(sceneName); sceneName - это название вашей сцены на которую вы хотите перейти. Пример: “Level_0” вот так SceneTransition.SwitchToScene(“Level_0”); Проверьте в File=>Build Settings установлены ли ваши сцены. *Данный текст был написан для новичков которые не смогли осилить данный гайд. Надеюсь спас хотя бы пару горящих пуканов интернов/джунов)
При этом Unity ругается следующими словами: MissingComponentException: There is no 'Animator' attached to the "startGame" game object, but a script is trying to access it. You probably need to add a Animator to the game object "startGame". Or your script needs to check if the component is attached before using it. То есть аниматор не подключен к кнопке, я так понял Но я не понимаю, у автора видео есть объект, который он создал. К кнопке он совсем не прикасался, там у него непонятно что вообще. Но каким-то образом все работает. Не можешь подсказать как?
Спасибо автор, я честно две недели думал как это сделать. Как-то на костылях тогда сделал и оставил! Через месяц смотрю твоё видео и офигел у меня половина всего было почти наоборот.
Спорное утверждение. Допустим, что сначала ты делаешь сущность игрока и забрасываешь туда скрипты. И есть сущность врага, где другие скрипты, которые присущи врагам. А потом тебе вдруг пришло в голову снабдить врагов какой-то функцией, которая уже отлично себя зарекомендовала с игроком. Что ты будешь делать? Дублировать скрипт? Или создашь особый раздел "игрок и враги"? А через месяц ты вдруг решил дополнить игру союзниками, которые не являются игроком и не являются врагами. Дальше как? Ещё один дубль скриптов? Или ещё набор невнятных папок "игрок и союзники", "союзники и враги", "игрок, союзники и враги"... В общем, тупиковое это направление.
@@-unity- я делаю папку существа. В ней все общие скрипты и папки с файлами конкретно игрока, моба Васи, мода феди и тд. Если в какой то момент мне понравилась фича например моба Васи, я ее код переношу в общие скрипты.
Тут дело вкуса, но по типу можно и так отстортировать фильтрами (спрайты/меши), так что такие папки по сути дублируют функционал. А по сущностям - хотя бы примерно знаешь где начинать искать, например надо поменять анимацию врага, не вспоминаешь как она сделана, через скрипт или аниматор, а сразу идёшь в папку врага. Хотя по сути можно так же ввести в поиск "Enemy" и получишь всё связанное с врагом, так что тут тоже некоторое дублирование
Настоящий бриллиант среди русскоязычных каналов по Unity! Только с синглтоном, имхо, слегка небрежно получилось. Наверное, лучше заводить в awake, и делать до конца, с проверкой и dontdestroy, чтоб служить примером для адептов) Спасибо за очередной туториал!
Спасибо! В Awake задавать instance да, это было бы правильнее. С dontdestroy тут бы не зашло, так как он в обычном канвасе у меня лежит, но если сделать префаб вместе с канвасом то это хорошая идея, тогда можно было бы не таскать его в каждую сцену
Здоров, дружище, не знаю твоего имени, но видео у тебя супер! Хочу тебе предложить перенять названия для переходов из Андроидной разработки. У нас эти методы помечаются как enterTransition для входа и exitTransition для выхода. Может понравится ¯\_(ツ)_/¯
Самый интересный экран загрузки, на мой взгляд, какой-нибудь интерактив, ну это для долгих загрузок - первых запусков, обнов и тд. В БДМ, например, flappy bird была и потом ещё мини-бонусы в игре дали)
Да, flappy bird точно можно вставить. Но вообще когда вижу такое в играх задумываюсь что может им стоило подумать как ускорить эту загрузку, а не развлекать игрока)
Помогите, загрузка уровня через главное меню проходит успешно, но когда загружаю главное меню с уровня, то он загружается, почему-то, не корректно. Вместо меню черный экран.
Даже в видео на 10:19 то, что мы, большие дяди, называем синглтоном 😂 То есть для начала советую создать какой-то класс GameManager, где будет статическое поле Instance. В методе Start напиши: if(Instance == null) { Instance = this; DontDestroyOnLoad(gameObject); } else GameObject.Destroy(gameObject); Кинешь этот скрипт на объект на первой сцене, при переходе на другую он не будет уничтожаться. Теперь в нем ты можешь объявлять другие скрипты и обращаться к ним будешь так: GameManager.Instance.Имя_скрипта
@@kawakami_idv Синглтоны хорошо использовать только в совсем мелких проектах. Несколько таких менеджеров, и уже начнется боль. Вот шикарная презентация, как люди изящно решают эту и другие задачи с помощью Scriptable Objects: ruclips.net/video/raQ3iHhE_Kk/видео.html
Пхахаха, рад что помог кому-то. В архитектуре, которую использую я синглтон всего один. Это как точка входа в приложения, в нем уже менеджеры, в менеджерах контроллеры и тд. Спасибо, почитаю как со скриптбл объектами там делают.
@@ilyanazarov7001 а еще можно заюзать Zenject) Хотя, честно говоря, я не совсем понимаю в чем такое уж прям зло синглтонов. Для менеджеров и других штук которые гарантировано существуют в одном экземпляре вроде норм. Я, например, раньше ссылки на префабы хранил в синглтон-контейнерах ( чтобы не через Resource.Load ), сейчас то же самое только через зенджектовский BindInstance.AsSingle, разницы вроде нет особой для работы.
Есть какой-то скрипт на кнопке? Ты добавил префаб в сцену меню, но никак не привязал работу скрипта к кнопке. Кнопка телепатически воспроизводит скрипт?
Отличное видео, спасибо за труд, было бы интересно посмотреть о переносе данных из сцены в сцену. Вроде перемещения игрока по комнатам лабиринта, если уже есть что то подобное на канале, поделитесь ссылкой плз. :3
Если переменные, то просто после public делаешь static и там дальше тип м название. Потом из другого скрипта или сцены вместо обычного названия переменной пишешь имя скрипта и через точку название переменной. Всё
я наверное никогда все же не стану кодером на Unity... (просто команды понимаю механику скрипта и так далее но как раставлять скобки и почему никак не допираю, максимум что получается учить это python так как их там меньше), но все равно спасибо за твои видео очень расслабляет и информативно! продолжай в том же духе!
Я всегда думал как игра понимает сколько ей осталось подгрузить ресурсов, когда рисуется прогресс бар. Оказывается довольно приблизительно. И у нас тут быстро скакнуло до 90% и немного подождало, а я видел плавные варианты. Значит оно зная, что ресурсы будут грузиться 3 сек + - брали и делали бар длительностью 5 сек например, и плавно рисовали прогресс бар, зная, что на загрузку нужно где-то 3 сек. В зависимости не от реального положения дел, а просто по времени. Очень интересно, но можно было немножко и помедленнее, на такой скорости не понятно то ли слушать и понимать о чем идет речь, то ли смотреть) Спасибо, одним вопросом стало меньше.
@Даниил Глаголев там же есть update и fixed update, если делать через апдейт, да оно может быть по разному, где-то быстрее, где-то медленнее. Через fixed update на любом компе будет одинаково, потому что там зависит не от частоты, а от времени. Так что можно какой-то средний промежуток подобрать и будет норм. Быстрый комп немножко подождет, у медленного полоса дойдет до конца и чуть позже будет переход.
Отличный канал,развития и подписоты) Но хотелось бы спросить,будет ли в обозримом будущем туториал или краткий гайд,для тех кто только начал изучение юнити и C+?
если загрузка уровня предполагает время в 20-30 секунд.. я бы сделал экран инвентаря или какието дополнительные подсказки или хитрости для игрока. так игрок бы провёл это время с пользой. ещё можно сделать полет камеры гдето над облаками.. или ещё чтото. идей много
Кстати инвентарь интересная идея, нигде вроде бы такого не видел, но вещь была бы полезная игроку! Подсказки-советы это классика, да, они тоже хорошо смотрятся
Автор Видео, привет!). Подскажи, а не проще переход сцены, в частности как у тебя, сделать через способ Таймлайн? В скрипте меньше записей надо делать и манипуляции меньше чем с Аниматором. Интересно твоё мнение:). Метод из видео используешь потому, что так привык или по другим причинам?
А что если пишет: не содержит определения для fillAmout и не удалось найти доступный метод расширения fillAmout, принимающий первый аргумент типа AsyncOperation. Вам не хватает директивы using или ссылки на сборку?
Мы делали игру матч-3 + ферма, и после матч-3, выдавалась награда и ферма грузилась секунд 5. Ну я как гейм-дизайнер попросил программистовЮ чтобы после победы на уровне игроку выдавался сундук, для открытия которого нужно дождаться "прогресса взлома" (на фоне загружалась ферма), когда ферма загружалась - сундук открывался, из неё вылетала награда - было клёво. Пришли заказчики, сказали что им не нравится что сундук с наградой так долго открывается, что открытие должно быть мгновенным, и вернулись к варианту скучного экрана загрузки. -_-
Привет, можешь, пожалуйста, сделать видео о том, как можно с помощью некого инструмента (например кирки или бура, неважно), изменять геометрию террейна?
Было бы очень здорово увидеть гайд по созданию клона Subway Surfers(управление свайпами по линиям, движение мира на игрока(а не игрока по миру), генерация препятствий и т.д) Такого не планируется?
Отличный ролик) Я бы предпочел просто крутилку на загрузочном экране сделать, т.к. возвращаемый Unity процент загрузки очень резко возрастает, и реальной информации о прогрессе загрузки игроку почти не даёт.
Спасибо! Да, если загрузка так как на видосе работает, то можно и крутилку. Но точно помню что у меня в каком-то старом проекте она прямо как часы прогресс возвращала, то ли там ассеты получились все похожего объёма, то ли просто разбиты на много файлов были P.S. канал у тебя годный)
@@EmeraldPowder да, наверное равномерно были распределены ресурсы, я на самом деле особо не вникал в алгоритм подгрузки данных, как-то не надо было) Спасибо за теплый отзыв по каналу)
помогите я сделал точно также но без плавного перехода, и когда сцена загрузилась то у меня какая-то беда со светом, то-есть я уже даже пост процессинг отрубил но свет при переходе на сцену становиться зеленоватым и я это уже на сцене никак не могу пофиксить, и причем если я начну игру прямо с основной сцены то такого бага нету
Ну по идеи после первой загрузки сцены в билде она улетает в оперативку и там чилит, при повторном входе в сцену она быстро её достает из этой оперативки. Могу ошибаться, но вроде так.
Отличные уроки, спасибо. Главное, что часто выходят. А можешь записать урок, как настроить визуал код, чтобы методы юнити показывал, я чет пробовал и не вышло ничего.
добрый день! добавил ваш скрипт в свои сцены как описано в видео(код скопировал с гитхаба, объекты и префаб сделал, аниматор настроил). Переход из меню в игровую сцену работает, из игровой сцены обратно - нет. В режиме Game в Editore в иерархии появляется объект Menu(isLoading) и больше ничего не происходит. Ни ошибок ничего. При повторном нажатии на кнопку выхода - появляется второй такой же объект Menu(isLoading) в иерархии и ничего больше не происходит. Подскажите, в чем может быть проблема? Думал ошибка в синглтонах (левел контроллер реализован через синглтон), переписал ваш код на публичные классы с вызовом через гейм обджекты на сцене - все тоже самое.. Скорее всего что то с подгрузкой сцен через async, но знаний не хватает понять что именно идет не так.
почитал про синглтоны - проблема точно не в них. Проверю еще раз, возможно, где -о ошибся с названиями булевых операторов и где-то не срабатывает переключение.
Можешь-ли ты сделать видеоурок по теме скриптов, выполняющихся в редакторе. Я знаю, что такое есть, но не знаю, как это реализуется. Для примера, можно показать тайл из урока по процедурной генерации. А именно, сделать какой-то скрипт, который будет на тайле, который, по нажатию кнопки в инспекторе, будет заранее просчитывать боковые стенки и записывать информацию оттуда в массив, находящийся в скрипте. Прям больно становится, когда вижу, сколько расчетов происходит при запуске этой сцены. Для того, чтобы наполнить урок больше, можно рассказать ещё про какие-то способы применения и особенности этого метода. Заранее спасибо
А была бы необходимость создавать билд каждый раз, если по окончании загрузки просто добавить "Нажмите клавишу, чтоб завершить загрузку"?) Ну типа там есть allowSceneActivation, и его можно ставить на true при нажатии кнопки, или это не сработает, и всё равно надо билд делать?
Мне очень интересно как реализовать переход межу сценами как у God of War или третий асасин там во времяя загрузки сцены ы можешь бегать по определённой зоне слушать всекие реплики и тд
По идее можно на этом экране загрузки любую мини- (или не мини) игру сделать. Но скорее всего она будет тормозить, по крайней мере если обычным юнитиевским LoadSceneAsync пользоваться
Привет, я не могу найти инфу о том, какие требование с технической точки зрения при попытки портирования игры с ПК на android, а также какие есть нюансы с изображениями? HELP!
Emerald Powder, а можешь сделать видео на одну тему? Я много где ищу, но нигде нету на это ответа, может ты знаешь? Можно ли в юнити, сделать перед возможность давать игроку выбирать, сколько ОЗУ выделить на работу игры(пример такого - это майнкрафт(больше я такого нигде не видел)). А в самой игре потом где-нибудь выводить то сколько ОЗУ по итогу выделено на игру, и сколько она потребляет в realtime.
Задавать скорее всего нельзя, это фишка java, чтобы в C#/Mono такое было я не слышал. А вот получить сколько используется скорее всего можно через стандартную библиотеку, наверное как-то так forum.unity.com/threads/how-to-get-entire-memory-usage-at-runtime-in-game-build.465564/
Я разрабатывал свою игру около года, несложная аркада для андройда. Сейчас у нее всего по паре новых игроков в день (чего тоже добиться было трудновато). Мне хотелось бы узнать, каким образом можно продвинуть свое приложение? Возможно есть какие то тонкости настройки в гугл плей консоль? Или как заинтересовать издателя? Каких издателей посоветуете?
Здравствуйте, сделал по видео ролику экран загрузки, но использую для красивой анимации перехода в настройки, суть в том что если зайти на уровень, выйти в меню и зайти в настройки то сама игра зависает, то есть анимация не запускается, но в юнити написано что сцена грузится и так может до бесконечности, но если изначально зайти в настройки то все хорошо. Возможно есть предположения с чем это может быть связано?
Здравствуйте, помогите: Я хз как сделать чтобы включить скрипт через другой ( если объект исМаинд тоесть мой нужно включить скрипт движени) Помогите пожалуйста. Заранее спасибо.
Ты можешь создать переменную типа MonoBehaviour и поместить в неё скрипт, который нужно включить, а затем присвоить true свойству enabled этого MonoBehaviour.
всё вроди хорошо, но можно ли сделать загрузку более плавной?) У меня дофига времени тратится на создание навмеша, можно ли показать его загрузку? Во время создания навмеша телефон телефон как-будто повисает. Хм посмотрел видео и получается что никак не сделать то, о чём я говорил)
Смотря чем навмеш создаётся, если прям фризит и нет никакой асинхронной функции, то наверное не получится. А если есть какой-то вариант не блокировать основной поток, то можно показать полоску, даже если не знаем настоящий прогресс, просто сделать чтобы она двигалась с определённой скоростью, и к концу бара замедлялась
Я 4 раза видео пересмотрел. У меня просто загружается сцена и нет никакой загрузки. Даже на милисекунду не появляется. Я не понимаю что не так. Я ведь по клику на кнопку должен вызывать метод " public void GoToGame() { SceneManager.LoadScene("Game"); }" из MenuManager?
Да, можно и так. Анимацию сделать можно было разными способами, и скриптом, и корутиной, но так - мне кажется самый гибкий, можно не меняя скрипт переделать на что угодно
Здравствуйте! А возможно сделать появление сцены с задержкой? Что бы не было видно действий начальных которые в сцене и которые я не хочу чтобы было видно? Буквально на 3 секунды что бы сцена побыла в темноте при этом она уже загрузилась но ещё не показывалась.
Здравствуйте. Встретился с задачей сделать плейлист с музыкой, который меняет музыку по окончанию на следующую или случайную в списке. Пару дней копаюсь в Гугле и на Ютубе и все только рассказывают как просто добавить музыку на сцену. У вас есть мысли по этому поводу или желание сделать ролик? Если есть материалы почитать, то с радостью ознакомлюсь
Можно просто использовать один AudioSource, навесить на него скрипт с массивом AudioClip'ов, и в этом скрипте в Update проверять, если этот AudioSource.isPlaying == false, задавать ему случайный трек и вызывать Play. И ещё убрать у него галочку loop, чтобы когда трек закончится, он остановился, и isPlaying стало false
Ребят, у меня наивный вопрос) - можно ли по видео на Ютубе научится нормально работать с юнити и создать нормальную игру что бы потом на всю жизнь денег хватило?)
Если есть мотивация - то только так научиться и можно) Но как показывает практика в геймдеве денег не так много, и если учишься делать игры с целью заработать, особенно если быстро заработать, то не хватает мотивации не бросить это дело до реально продаваемых игр
А можно ещё больше слов не по теме вместо объяснений. А то мало мне историй, а вот действий оставленных без объяснений хочется ещё больше. Так ещё делаешь всё так быстро, хочется ещё быстрее. Сейчас если постараться и замедлить видос можно за действиями уследить, не порядок, надо чтобы вообще невозможно было понять что происходит.
Автору: опять ты вводишь в заблуждение. 10-я минута. Большие дяди это синглтоном не называют. Диким отлизам: от того что вы так дико отлизываете автору, а кто то прямо таки перелизывает, вам кармы от автора не перепадет вы так и останетесь неадекватными отлизами. П.С: автор старается в меру своего опыта, но это не годнота. Слишком много учебных косяков и введение в заблуждение местами все портит.
Не хватает гарантии что всегда существует один экземпляр объекта, чтобы считать это синглтоном? Обычно такую проверку добавляют, что если instance уже есть, то уничтожить текущий объект, но тут я не стал делать, чтобы проще код смотрелся
@@EmeraldPowder верно, не стал. И поэтому это не одиночка. Но сказать не забыл что дядьки называют это одиночкой. Можно сделать видео "делаем римворлд". Пишем "хелло макаки" и говорим это такая же игра как и оригинал. А потом, ну на самом деле для простоты не стал делать все остальное. ))))
Для тех, у кого не перетаскивается Text Loading Percent. Используйте библиотеку using TMPro; далее замените public Text LoadingPercentage; на public TMP_Text LoadingPercentage; Надеюсь помог, желаю всем удачи!
Столкнулся с проблемой зависания LoadSceneAsync на android, так как автор видео меня очень заинтересовал подобным способом загрузки, отказываться от него я не хотел. Пришлось погуглить, что бы избежать проблемы зависания. Немного доработал код согласно официальной документации и проблема решилась. Вот ссылка для тех кто с этим столкнулся. gist.github.com/devskgames/811475dea5f37d020b785fbd9a7d76f3 Спасибо автору за изысканные решения, ваши видео очень помогают в разработке!
Если у вас при попытке перехода игра застрявает на чёрном экране, проверьте, *все ли нужные вам сцены включены в билд!* Я дважды всё повторил в точности, убрал все лишние анимации (и свои, и автора) даже, чтобы остался только рабочий скелет, но у меня была вот такая вот проблема. А ещё, проверьте, не перепутаны ли у вас анимации выключения и включения. На всякий. А то неприятно будет, поверьте.
Сам был бы рад об ECS посмотреть. Но система, как говорит сама Unity и ребята проводившие конференцию, говорили, что система ещё немного сырая. Да и пакет ещё в preview версии. А Job System уже достаточно полноценная система. Но думаю лучше сделать видео сразу по обоим системам сразу, когда обе будут допилены
Аниматор и неотключенный канвас будут обновляться каждый кадр, даже если они ничего не воспроизводят. Для анимации UI есть паки вроде UITween, все вещи вроде смены прозрачности или движения влево-вправо в них можно спокойно сделать.
@@maxalm3318 отключенные компоненты/целые объекты, как правило, не обновляются. Фишка аниматора в том, что даже при отсутствии анимаций он будет дергать отрисовку. А если мы говорим о канвасе размером с экран, то каждый кадр будет перерисовываться пустой экран, зачем? Анимации как правило используются при появлении/исчезании элементов, а кроме этих моментов сам элемент большую часть времени статичен, тогда выгоднее использовать не аниматор, а какие-то штуки вроде UITween, которые могут анимировать объект эти пару секунд и потом не забивать видюху/проц ненужной работой
Хорошее видео. Но хочется сделать замечание. Singleton - это не совсем то что было на экране, либо я не совсем понял мысль. Паттерн синглтон - паттерн при котором имеется только ОДИН инстанс класса. Реализуется он как раз похожим способом что ты сделал. Есть статическое приватное поле _instance. Есть статическое публичное свойство Instance => _instance ?? (_instance = new Class()) (если инстанс существует, верни его, если нет, создай новый, сохрани его, и верни) и делается приватный конструктор дабы нельзя было порождать новые инстансы из вне. Только использовать конструкцию Class.Instance.
Ты заслуживаешь больше подписчиков, спасибо за полезные видео
+++++++++
Если у вас Андройд, то ожидайте это =>
При загрузке большой сцены на слабых устройствах , с вероятностью 99,9% будет вылетать приложение из-за большой потребности оперативной памяти.
Нужно разделять загрузку сцены на этапы.
Разрабатывайте игры с умом ❤
Супер! Алгоритм ютуба знает, что мне надо.
Охаё! на связи Rimuru Dev. Если вы повторили точ в точ за автором и у вас ничего не получилось. Сделайте следующее () =>
Там где вы жмякаете на кнопку перехода на новую сцену, вместо SceneManager.LoadScene(sceneName); воспользуйтесь SceneTransition.SwitchToScene(sceneName);
sceneName - это название вашей сцены на которую вы хотите перейти.
Пример: “Level_0” вот так SceneTransition.SwitchToScene(“Level_0”);
Проверьте в File=>Build Settings установлены ли ваши сцены.
*Данный текст был написан для новичков которые не смогли осилить данный гайд. Надеюсь спас хотя бы пару горящих пуканов интернов/джунов)
При этом Unity ругается следующими словами:
MissingComponentException: There is no 'Animator' attached to the "startGame" game object, but a script is trying to access it.
You probably need to add a Animator to the game object "startGame". Or your script needs to check if the component is attached before using it.
То есть аниматор не подключен к кнопке, я так понял
Но я не понимаю, у автора видео есть объект, который он создал. К кнопке он совсем не прикасался, там у него непонятно что вообще. Но каким-то образом все работает.
Не можешь подсказать как?
Видео: 3 минуты назад
Комменты: классное видео
Просто здесь автор фигни не снимает, так что мы заранее знаем, что классное))
@@SHILY-PROJECT это да)
Спасибо автор, я честно две недели думал как это сделать. Как-то на костылях тогда сделал и оставил! Через месяц смотрю твоё видео и офигел у меня половина всего было почти наоборот.
12:44 вооооооу, не знал что там есть такая функция. Спасибо
Пожалуйста, всегда стараюсь побольше фичей которые сам знаю использовать в видео и показывать
Вы бы знали, как этот урок вовремя))!Спасибо!!!
Тоже считаю хранить файлы не по типу, а по сущности профитнее. Спасибо за уроки! Годно вещаешь)
Спорное утверждение. Допустим, что сначала ты делаешь сущность игрока и забрасываешь туда скрипты. И есть сущность врага, где другие скрипты, которые присущи врагам. А потом тебе вдруг пришло в голову снабдить врагов какой-то функцией, которая уже отлично себя зарекомендовала с игроком. Что ты будешь делать? Дублировать скрипт? Или создашь особый раздел "игрок и враги"? А через месяц ты вдруг решил дополнить игру союзниками, которые не являются игроком и не являются врагами. Дальше как? Ещё один дубль скриптов? Или ещё набор невнятных папок "игрок и союзники", "союзники и враги", "игрок, союзники и враги"... В общем, тупиковое это направление.
@@-unity- я делаю папку существа. В ней все общие скрипты и папки с файлами конкретно игрока, моба Васи, мода феди и тд. Если в какой то момент мне понравилась фича например моба Васи, я ее код переношу в общие скрипты.
Тут дело вкуса, но по типу можно и так отстортировать фильтрами (спрайты/меши), так что такие папки по сути дублируют функционал. А по сущностям - хотя бы примерно знаешь где начинать искать, например надо поменять анимацию врага, не вспоминаешь как она сделана, через скрипт или аниматор, а сразу идёшь в папку врага. Хотя по сути можно так же ввести в поиск "Enemy" и получишь всё связанное с врагом, так что тут тоже некоторое дублирование
@@EmeraldPowder я просто ленивая задница что то искать. Я лучше изначально запарюсь удобно покласть файлики)
Интересные темы затрагиваешь из ролика в ролик. Потом как-нибудь всё посмотрю)
"которое принимает число от единицы до одного" :) 14:05
так, и че?
@@tenko4647 ну он хотел сказать от нуля до одного.
Настоящий бриллиант среди русскоязычных каналов по Unity! Только с синглтоном, имхо, слегка небрежно получилось. Наверное, лучше заводить в awake, и делать до конца, с проверкой и dontdestroy, чтоб служить примером для адептов) Спасибо за очередной туториал!
Спасибо!
В Awake задавать instance да, это было бы правильнее. С dontdestroy тут бы не зашло, так как он в обычном канвасе у меня лежит, но если сделать префаб вместе с канвасом то это хорошая идея, тогда можно было бы не таскать его в каждую сцену
Обожаю смотреть тебя, самые лучшие уроки :)
В игре Superliminal, как по мне, очень интересные экраны загрузки)
Крутые видосы, ничего лишнего. Спасибо!!!
Здоров, дружище, не знаю твоего имени, но видео у тебя супер!
Хочу тебе предложить перенять названия для переходов из Андроидной разработки. У нас эти методы помечаются как enterTransition для входа и exitTransition для выхода. Может понравится ¯\_(ツ)_/¯
Как всегда великолепно, большое спасибо!
Насчёт отображения fillAmount: надо progress / 0.9f просто так 100% не будут отображены.
UPD: даже на скорости 0.25х нет 100%
Удачи тебе, отличные уроки👍👍👍
Самый интересный экран загрузки, на мой взгляд, какой-нибудь интерактив, ну это для долгих загрузок - первых запусков, обнов и тд.
В БДМ, например, flappy bird была и потом ещё мини-бонусы в игре дали)
Да, flappy bird точно можно вставить. Но вообще когда вижу такое в играх задумываюсь что может им стоило подумать как ускорить эту загрузку, а не развлекать игрока)
14:06 принимает число от единицы до одного
Спасибо за хороший туториал
Вышло 4 минут назад))
Приятно когда в тебя верят уже заранее)
Наааайс! Спасибо большое!
С тобой можно стать настоящим программистом и получить приглашение от Rockstar games, Valve, Ubisoft, Electronic arts.
Спасибо большое автору !!!
Такое качество, а так мало подписчиков и лайков. Успехов тебе и спасибо за видео!
65К это не мало скажу честно
Спасибо) оч. полезное видео!
Помогите, загрузка уровня через главное меню проходит успешно, но когда загружаю главное меню с уровня, то он загружается, почему-то, не корректно.
Вместо меню черный экран.
Привет, спасибо, можешь сделать перенос данных между сценами, переносить геймобжекты, стринги,инты .
Даже в видео на 10:19 то, что мы, большие дяди, называем синглтоном 😂
То есть для начала советую создать какой-то класс GameManager, где будет статическое поле Instance.
В методе Start напиши:
if(Instance == null) { Instance = this; DontDestroyOnLoad(gameObject); }
else GameObject.Destroy(gameObject);
Кинешь этот скрипт на объект на первой сцене, при переходе на другую он не будет уничтожаться.
Теперь в нем ты можешь объявлять другие скрипты и обращаться к ним будешь так: GameManager.Instance.Имя_скрипта
@@kawakami_idv Синглтоны хорошо использовать только в совсем мелких проектах. Несколько таких менеджеров, и уже начнется боль. Вот шикарная презентация, как люди изящно решают эту и другие задачи с помощью Scriptable Objects: ruclips.net/video/raQ3iHhE_Kk/видео.html
@@kawakami_idv Господи 😍😍😍пупсик я тебе готов дать, спасибо этот код мне как раз нужен 😍❤️спасибооооо.
Пхахаха, рад что помог кому-то. В архитектуре, которую использую я синглтон всего один. Это как точка входа в приложения, в нем уже менеджеры, в менеджерах контроллеры и тд. Спасибо, почитаю как со скриптбл объектами там делают.
@@ilyanazarov7001 а еще можно заюзать Zenject) Хотя, честно говоря, я не совсем понимаю в чем такое уж прям зло синглтонов. Для менеджеров и других штук которые гарантировано существуют в одном экземпляре вроде норм. Я, например, раньше ссылки на префабы хранил в синглтон-контейнерах ( чтобы не через Resource.Load ), сейчас то же самое только через зенджектовский BindInstance.AsSingle, разницы вроде нет особой для работы.
Есть какой-то скрипт на кнопке? Ты добавил префаб в сцену меню, но никак не привязал работу скрипта к кнопке. Кнопка телепатически воспроизводит скрипт?
спасибо, очень полезное видео)
Отличное видео, спасибо за труд, было бы интересно посмотреть о переносе данных из сцены в сцену. Вроде перемещения игрока по комнатам лабиринта, если уже есть что то подобное на канале, поделитесь ссылкой плз. :3
Если переменные, то просто после public делаешь static и там дальше тип м название. Потом из другого скрипта или сцены вместо обычного названия переменной пишешь имя скрипта и через точку название переменной. Всё
я наверное никогда все же не стану кодером на Unity... (просто команды понимаю механику скрипта и так далее но как раставлять скобки и почему никак не допираю, максимум что получается учить это python так как их там меньше), но все равно спасибо за твои видео очень расслабляет и информативно! продолжай в том же духе!
А что не так со скобками?
@@ИльяКрюковский-ь7п да, действительно! Скобки - не самая сложная вещь в программировании.
Я всегда думал как игра понимает сколько ей осталось подгрузить ресурсов, когда рисуется прогресс бар. Оказывается довольно приблизительно. И у нас тут быстро скакнуло до 90% и немного подождало, а я видел плавные варианты. Значит оно зная, что ресурсы будут грузиться 3 сек + - брали и делали бар длительностью 5 сек например, и плавно рисовали прогресс бар, зная, что на загрузку нужно где-то 3 сек. В зависимости не от реального положения дел, а просто по времени.
Очень интересно, но можно было немножко и помедленнее, на такой скорости не понятно то ли слушать и понимать о чем идет речь, то ли смотреть)
Спасибо, одним вопросом стало меньше.
@Даниил Глаголев там же есть update и fixed update, если делать через апдейт, да оно может быть по разному, где-то быстрее, где-то медленнее. Через fixed update на любом компе будет одинаково, потому что там зависит не от частоты, а от времени. Так что можно какой-то средний промежуток подобрать и будет норм. Быстрый комп немножко подождет, у медленного полоса дойдет до конца и чуть позже будет переход.
Отличный канал,развития и подписоты) Но хотелось бы спросить,будет ли в обозримом будущем туториал или краткий гайд,для тех кто только начал изучение юнити и C+?
если загрузка уровня предполагает время в 20-30 секунд.. я бы сделал экран инвентаря или какието дополнительные подсказки или хитрости для игрока. так игрок бы провёл это время с пользой. ещё можно сделать полет камеры гдето над облаками.. или ещё чтото. идей много
Кстати инвентарь интересная идея, нигде вроде бы такого не видел, но вещь была бы полезная игроку! Подсказки-советы это классика, да, они тоже хорошо смотрятся
Автор Видео, привет!). Подскажи, а не проще переход сцены, в частности как у тебя, сделать через способ Таймлайн? В скрипте меньше записей надо делать и манипуляции меньше чем с Аниматором. Интересно твоё мнение:). Метод из видео используешь потому, что так привык или по другим причинам?
14:05 чтож бывает:)
В 2020-м пора уже делать бесшовные переходы. Но за видосы спасибо, много полезного :)
А что если пишет: не содержит определения для fillAmout и не удалось найти доступный метод расширения fillAmout, принимающий первый аргумент типа AsyncOperation. Вам не хватает директивы using или ссылки на сборку?
Всё отлично, но очень быстро
20 минут на создание экрана загрузки. Куда уж медленнее, брат?😅
Мы делали игру матч-3 + ферма, и после матч-3, выдавалась награда и ферма грузилась секунд 5.
Ну я как гейм-дизайнер попросил программистовЮ чтобы после победы на уровне игроку выдавался сундук, для открытия которого нужно дождаться "прогресса взлома" (на фоне загружалась ферма), когда ферма загружалась - сундук открывался, из неё вылетала награда - было клёво.
Пришли заказчики, сказали что им не нравится что сундук с наградой так долго открывается, что открытие должно быть мгновенным, и вернулись к варианту скучного экрана загрузки. -_-
Не очень понял, как Юнити проверяет используемость ресурсов? если они могут загружаться динамически из Resources.Load по имени?
Привет, можешь, пожалуйста, сделать видео о том, как можно с помощью некого инструмента (например кирки или бура, неважно), изменять геометрию террейна?
Было бы очень здорово увидеть гайд по созданию клона Subway Surfers(управление свайпами по линиям, движение мира на игрока(а не игрока по миру), генерация препятствий и т.д)
Такого не планируется?
у меня при старте загрузочный экран висит, не смотря на то, что он находится в idle состоянии
Какой редактор кода вы используйте?
Rider
Отличный ролик) Я бы предпочел просто крутилку на загрузочном экране сделать, т.к. возвращаемый Unity процент загрузки очень резко возрастает, и реальной информации о прогрессе загрузки игроку почти не даёт.
Спасибо! Да, если загрузка так как на видосе работает, то можно и крутилку. Но точно помню что у меня в каком-то старом проекте она прямо как часы прогресс возвращала, то ли там ассеты получились все похожего объёма, то ли просто разбиты на много файлов были
P.S. канал у тебя годный)
@@EmeraldPowder да, наверное равномерно были распределены ресурсы, я на самом деле особо не вникал в алгоритм подгрузки данных, как-то не надо было)
Спасибо за теплый отзыв по каналу)
А загрузочный экран нужен только для красоты или он чем то помогает ?
помогите я сделал точно также но без плавного перехода, и когда сцена загрузилась то у меня какая-то беда со светом, то-есть я уже даже пост процессинг отрубил но свет при переходе на сцену становиться зеленоватым и я это уже на сцене никак не могу пофиксить, и причем если я начну игру прямо с основной сцены то такого бага нету
Ну по идеи после первой загрузки сцены в билде она улетает в оперативку и там чилит, при повторном входе в сцену она быстро её достает из этой оперативки. Могу ошибаться, но вроде так.
Надо было бы упомянуть что все файлы из папок Resourсes попадут в билд
Отличные уроки, спасибо. Главное, что часто выходят. А можешь записать урок, как настроить визуал код, чтобы методы юнити показывал, я чет пробовал и не вышло ничего.
Держи:
ruclips.net/video/9GsV9TpWtzw/видео.html
@@funnytime4372, попробую. Обнял :)
добрый день! добавил ваш скрипт в свои сцены как описано в видео(код скопировал с гитхаба, объекты и префаб сделал, аниматор настроил). Переход из меню в игровую сцену работает, из игровой сцены обратно - нет. В режиме Game в Editore в иерархии появляется объект Menu(isLoading) и больше ничего не происходит. Ни ошибок ничего. При повторном нажатии на кнопку выхода - появляется второй такой же объект Menu(isLoading) в иерархии и ничего больше не происходит.
Подскажите, в чем может быть проблема? Думал ошибка в синглтонах (левел контроллер реализован через синглтон), переписал ваш код на публичные классы с вызовом через гейм обджекты на сцене - все тоже самое.. Скорее всего что то с подгрузкой сцен через async, но знаний не хватает понять что именно идет не так.
почитал про синглтоны - проблема точно не в них. Проверю еще раз, возможно, где -о ошибся с названиями булевых операторов и где-то не срабатывает переключение.
не срабатывает триггер sceneOpening при переходе на новой сцене, не срабатывает функция в конце анимации.
Какую IDE ты используешь?
Jetbrains Rider
Можешь-ли ты сделать видеоурок по теме скриптов, выполняющихся в редакторе. Я знаю, что такое есть, но не знаю, как это реализуется. Для примера, можно показать тайл из урока по процедурной генерации. А именно, сделать какой-то скрипт, который будет на тайле, который, по нажатию кнопки в инспекторе, будет заранее просчитывать боковые стенки и записывать информацию оттуда в массив, находящийся в скрипте. Прям больно становится, когда вижу, сколько расчетов происходит при запуске этой сцены. Для того, чтобы наполнить урок больше, можно рассказать ещё про какие-то способы применения и особенности этого метода. Заранее спасибо
Не получается создать второе соединение New State. Кнопка Make Transition на второй раз просто отсутствует в списке. Что делать?
А куда скрипт Menu Manager засунул никак не могу понять, скрипт который запускает смену сцен емае, целый день на это потратил
А была бы необходимость создавать билд каждый раз, если по окончании загрузки просто добавить "Нажмите клавишу, чтоб завершить загрузку"?)
Ну типа там есть allowSceneActivation, и его можно ставить на true при нажатии кнопки, или это не сработает, и всё равно надо билд делать?
А можешь впредь делать захват екрана в меньших размерах? На планшете несмотрибельно.
Мне очень интересно как реализовать переход межу сценами как у God of War или третий асасин там во времяя загрузки сцены ы можешь бегать по определённой зоне слушать всекие реплики и тд
По идее можно на этом экране загрузки любую мини- (или не мини) игру сделать. Но скорее всего она будет тормозить, по крайней мере если обычным юнитиевским LoadSceneAsync пользоваться
@@EmeraldPowder Может Unity не оптимизирована под данные задачи, а вот UE скорее всего подойдёт
Сделай гайд по рендерингу. ПЖ
Я так и не понял куда кидать скрипт MenuManeger
Сделал всё в точности как на видео, не роботает.
Привет, я не могу найти инфу о том, какие требование с технической точки зрения при попытки портирования игры с ПК на android, а также какие есть нюансы с изображениями? HELP!
Emerald Powder, а можешь сделать видео на одну тему? Я много где ищу, но нигде нету на это ответа, может ты знаешь? Можно ли в юнити, сделать перед возможность давать игроку выбирать, сколько ОЗУ выделить на работу игры(пример такого - это майнкрафт(больше я такого нигде не видел)). А в самой игре потом где-нибудь выводить то сколько ОЗУ по итогу выделено на игру, и сколько она потребляет в realtime.
Задавать скорее всего нельзя, это фишка java, чтобы в C#/Mono такое было я не слышал. А вот получить сколько используется скорее всего можно через стандартную библиотеку, наверное как-то так
forum.unity.com/threads/how-to-get-entire-memory-usage-at-runtime-in-game-build.465564/
@@EmeraldPowder спасибо. Действительно, получилось через profiler вывести. Оказывается все было так просто.
Я разрабатывал свою игру около года, несложная аркада для андройда. Сейчас у нее всего по паре новых игроков в день (чего тоже добиться было трудновато). Мне хотелось бы узнать, каким образом можно продвинуть свое приложение? Возможно есть какие то тонкости настройки в гугл плей консоль? Или как заинтересовать издателя? Каких издателей посоветуете?
Что это за среда разработки?
У меня не работает и миллион ошибок 😭:(
Здравствуйте, сделал по видео ролику экран загрузки, но использую для красивой анимации перехода в настройки, суть в том что если зайти на уровень, выйти в меню и зайти в настройки то сама игра зависает, то есть анимация не запускается, но в юнити написано что сцена грузится и так может до бесконечности, но если изначально зайти в настройки то все хорошо. Возможно есть предположения с чем это может быть связано?
Это не называется синглтоном, синглтон подразувает единственный объект этого класса на протяжении жизни всей программы, а тут просто статическое поле
Здравствуйте, помогите:
Я хз как сделать чтобы включить скрипт через другой ( если объект исМаинд тоесть мой нужно включить скрипт движени)
Помогите пожалуйста.
Заранее спасибо.
Ты можешь создать переменную типа MonoBehaviour и поместить в неё скрипт, который нужно включить, а затем присвоить true свойству enabled этого MonoBehaviour.
Думаю, что есть способ лучше, но я такого пока не знаю)
Как вывести индикаторы fps и ms в игре , как тут 18:35
Скрипт написать
Используя класс profiler?
всё вроди хорошо, но можно ли сделать загрузку более плавной?) У меня дофига времени тратится на создание навмеша, можно ли показать его загрузку? Во время создания навмеша телефон телефон как-будто повисает.
Хм посмотрел видео и получается что никак не сделать то, о чём я говорил)
Смотря чем навмеш создаётся, если прям фризит и нет никакой асинхронной функции, то наверное не получится. А если есть какой-то вариант не блокировать основной поток, то можно показать полоску, даже если не знаем настоящий прогресс, просто сделать чтобы она двигалась с определённой скоростью, и к концу бара замедлялась
Как идея насчет видеоуроков по Shader Graph Unity?
По нему у меня только старенький видос про пиксельный огонь, если придёт в голову какой-то крутой и оригинальный эффект - буду делать ещё
Я 4 раза видео пересмотрел. У меня просто загружается сцена и нет никакой загрузки. Даже на милисекунду не появляется. Я не понимаю что не так.
Я ведь по клику на кнопку должен вызывать метод
" public void GoToGame()
{
SceneManager.LoadScene("Game");
}"
из MenuManager?
Вместо SceneManager ты добавляешь SceneTransition.SwitchToScene("Game");
Можно создать только одну анимацию,чтобы не засирать проект.Open - скорость у этой этой анимации 1, Close = -1;
Да, можно и так. Анимацию сделать можно было разными способами, и скриптом, и корутиной, но так - мне кажется самый гибкий, можно не меняя скрипт переделать на что угодно
байтоебство.
Здравствуйте! А возможно сделать появление сцены с задержкой? Что бы не было видно действий начальных которые в сцене и которые я не хочу чтобы было видно? Буквально на 3 секунды что бы сцена побыла в темноте при этом она уже загрузилась но ещё не показывалась.
Можешь анимацию с чёрным экраном на 3 секунды на новой сцене добавить.
Здравствуйте. Встретился с задачей сделать плейлист с музыкой, который меняет музыку по окончанию на следующую или случайную в списке. Пару дней копаюсь в Гугле и на Ютубе и все только рассказывают как просто добавить музыку на сцену. У вас есть мысли по этому поводу или желание сделать ролик? Если есть материалы почитать, то с радостью ознакомлюсь
Можно просто использовать один AudioSource, навесить на него скрипт с массивом AudioClip'ов, и в этом скрипте в Update проверять, если этот AudioSource.isPlaying == false, задавать ему случайный трек и вызывать Play. И ещё убрать у него галочку loop, чтобы когда трек закончится, он остановился, и isPlaying стало false
@@EmeraldPowder Спасибо большое. Очень выручил
Есть вопрос, можно ли как то загрузить сцену с сервера и перейти в неё?
кури AssetBundles
Самый интересный экран загрузки был в последнем God of War с:
Блин уже 5 минут думаю какой там был екран загрузки и не могу вспомнить
@@tweak7513 вспомнил ?
@@FrezerTop уже 2 дня думаю и еще не вспомнил(
Ничего чего-то не проигрывается. Никакого прогресс-бара. Просто черный экран и загрузка другой сцены
Ребят, у меня наивный вопрос) - можно ли по видео на Ютубе научится нормально работать с юнити и создать нормальную игру что бы потом на всю жизнь денег хватило?)
Если есть мотивация - то только так научиться и можно) Но как показывает практика в геймдеве денег не так много, и если учишься делать игры с целью заработать, особенно если быстро заработать, то не хватает мотивации не бросить это дело до реально продаваемых игр
@@EmeraldPowder ясно, буду мотать на ус. Спасибо!
Я ку-ку 19
слишком быстро слишком много слов
Такое чувство, что это второй канал Хуади Хо.
Но это только чувство, потому что очень похож стиль подачи материала
Ты совсем там упоролся?
нихрена не работает !
Всем привет, кто хочет вместе поработать над общим проектом - пишите. Деньги на продвижение есть
В этом весь гoвнoюнити)))00 тут не проигрываетя, там заплатка, а тут вообще только только дырявый плагин по 200$ )00
А можно ещё больше слов не по теме вместо объяснений. А то мало мне историй, а вот действий оставленных без объяснений хочется ещё больше. Так ещё делаешь всё так быстро, хочется ещё быстрее. Сейчас если постараться и замедлить видос можно за действиями уследить, не порядок, надо чтобы вообще невозможно было понять что происходит.
Автору: опять ты вводишь в заблуждение. 10-я минута. Большие дяди это синглтоном не называют.
Диким отлизам: от того что вы так дико отлизываете автору, а кто то прямо таки перелизывает, вам кармы от автора не перепадет вы так и останетесь неадекватными отлизами.
П.С: автор старается в меру своего опыта, но это не годнота. Слишком много учебных косяков и введение в заблуждение местами все портит.
Не хватает гарантии что всегда существует один экземпляр объекта, чтобы считать это синглтоном? Обычно такую проверку добавляют, что если instance уже есть, то уничтожить текущий объект, но тут я не стал делать, чтобы проще код смотрелся
@@EmeraldPowder верно, не стал. И поэтому это не одиночка. Но сказать не забыл что дядьки называют это одиночкой. Можно сделать видео "делаем римворлд". Пишем "хелло макаки" и говорим это такая же игра как и оригинал. А потом, ну на самом деле для простоты не стал делать все остальное. ))))
Когда узнал, что прогресс бары фейковые: 😭
Ну нет, можно сделать и настоящий, но там гемора больше
@@TeamSLywnow Ну помоги
@@SUBzOnFire brackeys
У вас талант преподавателя. Вы так филигранно балансируете между "водой" и информацией.
Спасибо!
Для тех, у кого не перетаскивается Text Loading Percent.
Используйте библиотеку using TMPro;
далее замените public Text LoadingPercentage; на public TMP_Text LoadingPercentage;
Надеюсь помог, желаю всем удачи!
Столкнулся с проблемой зависания LoadSceneAsync на android, так как автор видео меня очень заинтересовал подобным способом загрузки, отказываться от него я не хотел. Пришлось погуглить, что бы избежать проблемы зависания. Немного доработал код согласно официальной документации и проблема решилась. Вот ссылка для тех кто с этим столкнулся. gist.github.com/devskgames/811475dea5f37d020b785fbd9a7d76f3
Спасибо автору за изысканные решения, ваши видео очень помогают в разработке!
Если у вас при попытке перехода игра застрявает на чёрном экране, проверьте, *все ли нужные вам сцены включены в билд!* Я дважды всё повторил в точности, убрал все лишние анимации (и свои, и автора) даже, чтобы остался только рабочий скелет, но у меня была вот такая вот проблема.
А ещё, проверьте, не перепутаны ли у вас анимации выключения и включения. На всякий. А то неприятно будет, поверьте.
Спасибо за урок! Планируешь сделать видео по ECS/Job System в Unity?
Сам был бы рад об ECS посмотреть. Но система, как говорит сама Unity и ребята проводившие конференцию, говорили, что система ещё немного сырая. Да и пакет ещё в preview версии.
А Job System уже достаточно полноценная система. Но думаю лучше сделать видео сразу по обоим системам сразу, когда обе будут допилены
@@watermelon0guy а в чем функция job system?
Аниматор и неотключенный канвас будут обновляться каждый кадр, даже если они ничего не воспроизводят. Для анимации UI есть паки вроде UITween, все вещи вроде смены прозрачности или движения влево-вправо в них можно спокойно сделать.
Поправьте если я не прав, но каждый объект на сцене обновляется каждый кадр даже если ничего не делает? Так в чем исключительность аниматора?
@@maxalm3318 отключенные компоненты/целые объекты, как правило, не обновляются. Фишка аниматора в том, что даже при отсутствии анимаций он будет дергать отрисовку. А если мы говорим о канвасе размером с экран, то каждый кадр будет перерисовываться пустой экран, зачем?
Анимации как правило используются при появлении/исчезании элементов, а кроме этих моментов сам элемент большую часть времени статичен, тогда выгоднее использовать не аниматор, а какие-то штуки вроде UITween, которые могут анимировать объект эти пару секунд и потом не забивать видюху/проц ненужной работой
Хорошее видео. Но хочется сделать замечание. Singleton - это не совсем то что было на экране, либо я не совсем понял мысль. Паттерн синглтон - паттерн при котором имеется только ОДИН инстанс класса. Реализуется он как раз похожим способом что ты сделал. Есть статическое приватное поле _instance. Есть статическое публичное свойство Instance => _instance ?? (_instance = new Class()) (если инстанс существует, верни его, если нет, создай новый, сохрани его, и верни) и делается приватный конструктор дабы нельзя было порождать новые инстансы из вне. Только использовать конструкцию Class.Instance.