Точка входа и менеджмент сцен в Unity. Проект

Поделиться
HTML-код
  • Опубликовано: 16 янв 2025

Комментарии • 66

  • @Shineglow
    @Shineglow 5 месяцев назад +6

    Точка входа в юнити без монобеха для меня открытие, я столько видел туторов на тему старта в юнити и никто ни разу это не использовал.
    Больше 2-х лет работал с юнити и ни в одном проекте не видел. Понятно, что вещь не обязательная и не критическая, но выглядит очень полезно.
    Огромное спасибо за эту информацию.

  • @mdvulfix
    @mdvulfix 7 месяцев назад +20

    Обязательно надо добавить еще сцену и организовать переход между ними!! Обязательно! =)

    • @dm1tryrin
      @dm1tryrin 7 месяцев назад +4

      Плюсую. Вообще для меня менеджмент сцен и правильный перенос данных между сценами - одна из проблемных вещей сейчас.

    • @mr.kofeek
      @mr.kofeek 7 месяцев назад +1

      плюсую

    • @Oscar-ll6mt
      @Oscar-ll6mt 7 месяцев назад +1

      +

    • @АлексейАлексеев-ш9ф
      @АлексейАлексеев-ш9ф 7 месяцев назад

      Полностью поддерживаю!)

    • @nikaragisgames
      @nikaragisgames 6 месяцев назад

      Однозначно необходимо!

  • @andreimaroz6202
    @andreimaroz6202 7 месяцев назад +13

    За RuntimeInitializeOnLoadMethod отдельный поклон :)

  • @nepochat
    @nepochat 7 месяцев назад +8

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

  • @АлександрМармеладов-й3я
    @АлександрМармеладов-й3я 7 месяцев назад +8

    Блин, где было это видео год назад?!? Почему мне раньше никто не сказал что можно так делать? Теперь хочется переделать все мои старые игры.

  • @AHPyXA
    @AHPyXA 7 месяцев назад +3

    Спасибо большое :) Очень полезно и познавательно :)

  • @Jourdfdf
    @Jourdfdf 6 месяцев назад +1

    Спасибо огромное за видео!
    Бесценный просто контент
    На все лайки и подписка

  • @женяполяков-е2з
    @женяполяков-е2з 7 месяцев назад +1

    Ждем следующую часть всем селом

  • @ЛенаИванова-ц8ю
    @ЛенаИванова-ц8ю 7 месяцев назад +2

    Добавить сцену обязатнльно.
    Отличное видео

  • @АлександрМармеладов-й3я
    @АлександрМармеладов-й3я 7 месяцев назад +2

    Да, я бы посмотрел на систему из трех сцен, чтобы закрепить материал так сказать

  • @alexandersokolov2434
    @alexandersokolov2434 2 месяца назад +1

    Я делаю пет-проект под webGL и столкнулся с такой проблемой: при переходе во время игры в полноэкранный режим при переходе на следующую сцену ui новой сцены сползает. Я так понял, это происходит из-за того, что uiRoot мы сделали DontDestroyOnLoad и canvas uiRoot сохраняет старые размеры окна, а прикрепленный к нему ui canvas следующей сцены имеет уже другие значения размера нового окна. В итоге uiRoot canvas во весь экран, а UI сцены сползает, хотя у всех канвасов стоит scale with screen size. Если же менять размеры окна без перехода на следующую сцену, то все ок. На мой взгляд мое решение проблемы выглядит несколько костыльно. Я в uiRoot в fixedUpdate меняю размеры resolution scale у канваса, а затем у ui сцены размер и расположение как у канваса uiRoot. Андрей, как можно решить эту проблему более правильным способом?

  • @СлаваДобровольский-ъ3з

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

  • @devnem0y
    @devnem0y 7 месяцев назад +5

    Классно! Слушай, а что если делать не через resources.load, а через addressables. Сейчас мониторю вакансии, многие указывают addressables в требовании. На сколько оно вообще лучше и подойдет ли в данном случае?

    • @Dmitry-fi2gt
      @Dmitry-fi2gt 7 месяцев назад

      Можно. Но грузить и выгружать уже сцены не стартовые.

    • @gamedevlavka
      @gamedevlavka  7 месяцев назад +2

      Технически можно, но конкретно в этом случае (загрузка рутового UI) через addressables делать - это из пушки по воробьям стрелять. А вообще тема актуальная в целом

  • @Oscar-ll6mt
    @Oscar-ll6mt 7 месяцев назад +1

    Расширяем, все что можно расширить😅

  • @def6141
    @def6141 7 месяцев назад +2

    Расширяем :)

  • @RimuruDev
    @RimuruDev 7 месяцев назад +3

    Ура новые фишечки :3

  • @DeadRabbitCanDance
    @DeadRabbitCanDance 6 месяцев назад +1

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

  • @andreiraketa6300
    @andreiraketa6300 6 месяцев назад +1

    Очень радует, что минимум нагромождений в виде плагинов

  • @MrGolovewkin
    @MrGolovewkin 7 месяцев назад +1

    Perfect!

  • @yummybunny7351
    @yummybunny7351 7 месяцев назад +2

    gamedevlavka, как относишься к архитектуре kSyndicate ? Наверняка ты сталкивался. Там похожий bootstrapper, но стартует с монобеха, а не с InitializeOnLoad. Ещё у них там огромная state machnie.
    У тебя опечатка в слове "instance"

    • @yummybunny7351
      @yummybunny7351 7 месяцев назад +1

      Здесь на видео неплохая, приятная архитектура, мне нравится.

    • @gamedevlavka
      @gamedevlavka  7 месяцев назад +1

      Я с ней не знакомился. Но по твоим словам могу предположить, что там такое. Старт с монобеха - окэй, хоть и больше завязывает на движок. Но кто сейчас на это смотрит? Однако, скажу такую вещь: чем меньше завязываешься на движок, тем легче с него потом перейти, если потребуется. Или портировать игру. У меня просто опыт смены движка на игре есть и я был рад таким мелочам.
      Огромная state machine - тут вариантов много в голове возникает. При этом какие-то решения могут быть хорошими, какие-то не очень. Но у меня в голове ОГРОМНАЯ машина состояний не складывается даже при нагруженных мобильных и ПК проектах. Надо как-нибудь ознакомиться с их решением, интересно. Так же стейт машина в явном виде может быть оверинжинирингом, и можно обойтись "стейт машиной" построенной на методах и "колбеках". Скорее всего на этом проекте мы так и сделаем.
      За опечатку спасибо)

  • @thepoisonoflegend
    @thepoisonoflegend 7 месяцев назад +1

    Приятно увидеть по-настоящему компетентный код от профессионала. До сих пор ничего подобного не видел. Есть ли какие-то ссылки на best practice по архитектуре в Unity? Я сам сколько не гуглил, ничего глубже "ставить _ перед приватными полями" не видел.

    • @gamedevlavka
      @gamedevlavka  7 месяцев назад +1

      Спасибо)
      Best Practice, к сожалению, не видел хороших подборок, хоть свою составляй)
      Есть, конечно, с неймингами практики, но и они наполовину вкусовщина. Ну а конкретно архитектурные делается на очевидные и сложные для понимания. Очевидные скорее всего уже где-то виделись, а сложные не перечислены в списках)

  • @Fenneig
    @Fenneig 7 месяцев назад +1

    Было бы круто в рамках рубрики еще разобрать ассеты UniTask и Addresables, часто про них слышал, но не особо погружался )

    • @gamedevlavka
      @gamedevlavka  7 месяцев назад +2

      UniTask не будет, это старье никто не поддерживают уже несколько лет. Для асинхронности будет использована библиотека System.Reactive, то есть будем познавать реактивщину, что уровнем выше и удобнее всяких await функций.
      Addressables вероятно затронем в каком-то виде, а может и сильно затронем

    • @Fenneig
      @Fenneig 7 месяцев назад

      @@gamedevlavka ну в целом асинхронщину хотелось увидеть-пощупать, так что круто :)

    • @dexictor
      @dexictor 6 месяцев назад +1

      @@gamedevlavka я думаю про UniTask ты не прав, он поддерживается, это ситуация ровно как с Zenject. Это законченные продукты/плагины, что там должно обновляется если оно работает ? максимум баг фиксы, которые ну очень редко возможно поймать, т.к. много проектов уже обкатали его на продакшине.
      Если у нас в юнити версия С# не менялась, что там поддерживать.

    • @rebelmindes884
      @rebelmindes884 4 месяца назад +1

      @@gamedevlavka Даешь Народу - Addressables, товарищ!

  • @DuckVis
    @DuckVis 7 месяцев назад +1

    Приветствую, не проще работать с async, вместо coroutine?

    • @gamedevlavka
      @gamedevlavka  7 месяцев назад

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

  • @danil_zz
    @danil_zz 2 месяца назад +1

    Стесняюсь спросить, что за редактор кода?

    • @gamedevlavka
      @gamedevlavka  2 месяца назад

      @@danil_zz это Rider, удобнее пока не встречал

    • @danil_zz
      @danil_zz 2 месяца назад +1

      @gamedevlavka понял, спасибо. А я думал, это Visual Studio новая, которую я качать не хотел.

  • @GladyBoroda
    @GladyBoroda 2 месяца назад +1

    А я с такой проблемой столкнулся:
    В геймплей сцене у меня уже есть объект и свет
    Если запускать плеймод не с геймплейной сцены, то визуально сцена выглядит не корректно. Но если запускать с геймплейной сены, всё ок.
    Подскажите плиз почему так)

    • @gamedevlavka
      @gamedevlavka  2 месяца назад

      @@GladyBoroda это проблема редактора, но признаюсь честно, не помню как ее решить, и решаема ли она вообще

  • @StratoCatster
    @StratoCatster 7 месяцев назад +1

    Еще есть способ от сцены получить все корневые объекты и найти нужный компонент по ним.
    Типо оптимизированней 😅

  • @psaPGL
    @psaPGL 7 месяцев назад +1

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

    • @gamedevlavka
      @gamedevlavka  7 месяцев назад

      Получаца, что так)

  • @sergeypogorelov7059
    @sergeypogorelov7059 7 месяцев назад +1

    Спасибо большое, было очень полезно 😊 такой вопрос, а вы работаете в какой-то профессиональной студии? Или самоучка всё-таки? В последнее верится слабо 😅

    • @gamedevlavka
      @gamedevlavka  7 месяцев назад +1

      Самоучки тоже работают в профессиональных студиях)
      Скажу так: я отучился на защитника информации, это профессия связана в том числе с программированием (но это не основное). Затем сам обучился создавать игры на юнити и попал в игрострой. Ну и далее развивался в этом направлении, последние 7+ лет работаю в коммерческом игрострое. Правда, сейчас студийный проект на Cocos движке, но я уже на том уровне, когда не важно, какой движок, какой язык)
      Но делиться кокосовыми "приколами" пока не тянет, не вижу запроса

    • @sergeypogorelov7059
      @sergeypogorelov7059 7 месяцев назад

      @@gamedevlavka понял, спасибо большое за ответ))

  • @anatoliy9696
    @anatoliy9696 7 месяцев назад

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

    • @gamedevlavka
      @gamedevlavka  7 месяцев назад +2

      1. Так может показаться, потому что и Boot и Gameplay пустые (практически). Однако, Gameplay может и, скорее всего, будет содержать какой-то пред заготовленный контент
      2. Переход по сценам может быть нетривиальным процессом, ведь часто нужно передавать параметры входа в сцену и выхода из сцены. И пока четко не понятны входные и выходные параметры, которые для разных сцен могут быть разнородными, а также сам процесс запуска сцены может включать разные действия - лучше воздержаться от создания загрузчика сцен, чтобы не тратить на это время

  • @Pop-It-ka
    @Pop-It-ka 7 месяцев назад

    Как насчет запушить на git?))

    • @gamedevlavka
      @gamedevlavka  6 месяцев назад +1

      Отличная идея! Уже залил)

  • @eloreneloreneloreneloreneloren
    @eloreneloreneloreneloreneloren 7 месяцев назад +1

    Про слип таймаут для мобилок никогда не слышал, расскажи еще фишки которые не все могут знать.
    Не лучше ли использовать несколько канвасов, для экранов и попапов отдельно?
    И можно ли избежать опечаток в #if UNITY_EDITOR как с названиями сцен? Я один раз опечатался, и целый кусок кода не выполнялся. Ведь #if UNITY_EDTIOR уже false.

    • @gamedevlavka
      @gamedevlavka  7 месяцев назад

      Так на вскидку ещё фишек не скажешь, они всплывёт далее скорее всего. С управлением, например
      Да, несколько канвасов технически оптимизированнее. Но в этом проекте и так сойдёт, UI не сильно будет нагружен.
      Про опечатки - райдер подсказывает, у него оч хорошая интеграция с юнити. Но надо либо плотить за лицензию, либ9о искать "народную" версию) я плочу, если что)

    • @romanbolkun3353
      @romanbolkun3353 7 месяцев назад

      ​@@gamedevlavka Насчет нескольких канвасов прочел и не совсем понял. Ето типа разделение, HUD и игровой магазин в два отдельн канваса?

    • @gamedevlavka
      @gamedevlavka  7 месяцев назад

      @@romanbolkun3353 нет, это именно слой экрана и слой попапов предлагается разделить, чтобы рендерилось быстрее

    • @romanbolkun3353
      @romanbolkun3353 7 месяцев назад

      @@gamedevlavka понял, спасибо)

    • @nickicool
      @nickicool 7 месяцев назад

      @@gamedevlavka а я не понял... разделить HUD и POPUP по своим префабам?

  • @morphidevtalk
    @morphidevtalk 7 месяцев назад

    heh, первый