learn-unity

learn-unity 

Наша жизнь игра, и мы её программисты

2subscribers

20posts

goals1
0 of 10 paid subscribers
Если наберем 10 подписчиков, значит мы нужны, значит мы важны...

Загрузка сцен

О чем ты узнаешь из видео:
✅ Как делать сцены
✅ Что такое build settings
✅ Зачем нужен SceneManager
Ремарка
Друзья перед тем, как мы перейдем к самому уроку, сделаем небольшую ремарку. Начинающие проггеры часто испытывают проблемы с терминологией Unity и программирования в целом. Для ее решения, мы сделали рубрику "словарь" в нашем telegram-канале. Каждый день в течении года (!!) на канал будут публиковаться термины связанные с game dev'ом. Самое главное: если термин будет состоять из других, более фундаментальных, то он выйдет позже и будет ссылаться на те термины, что уже были. Если говорить прямо и без намеков: мы приглашаем вас всех в наш телеграмм канал, ссылка в описании.
Как делать сцены
Благодаря прошлым урокам вы знаете что сцена - это составляющая часть проекта, на которой находятся и взаимодействуют между собой игровые объекты. А еще вы помните, что при создании пустого проекта, Unity автоматически создает сцену, на которой по умолчанию есть камера.
В проекте может быть сколько угодно сцен. Они могут представлять из себя уровень или его часть. Для того чтобы сделать новую сцену, нужно перейти в папку Scenes (для поддержания порядка в файловой архитектуре), затем нажать правую кнопку мыши, выбрать опцию `Create` и в ней выбрать пункт `S`cene. После этого даем название сцене и жмем `Enter`.
Также мы можем сделать копию уже существующей сцены. Копия нужна, так как на одной сцене может быть ряд объектов, которые должны быть и на другой сцене, и чтобы не делать повторное копирование объектов можно просто взять и продублировать уже существующую сцену. Для копирования сцены выбираем интересующую, жмем Ctr + D и даем ей название.
Для порядка в файловой системе, удалим пустую сцену, которую сделали в прошлый раз. Если вы тоже ее еще не удалили - то давайте сделаем это вместе! А еще давайте дадим название двум только что созданным сценам: `Level 1` и `Level 2` соответственно.
Что такое build settings
На этом моменте у начинающих разработчиков (а тут только такие, верно?) может возникнуть вопрос, какая из двух существующих сцен запустится первой. Если это будет сцена под названием `Level 1` , то как сделать так, чтобы это была сцена `Level 2` ?
Ответы на эти вопросы может дать окно Build Settings, отвечающее за настройку сборки, то есть готовой игры. Для этого в левом верхнем углу кликаем на `File` и в нем выбираем опцию `Build Settings`. В появившемся окне нас интересует секция `Scenes in Build` (сцены в сборке).
Сейчас здесь находится только сцена под названием `Level 1`. Чтобы сцена `Level 2`, была в сборке, нам нужно перетянуть ее в это окно. А если нам надо чтобы сцена под названием `Level 2`, запустилась раньше, то перетягиваем ее выше `Level 1`.
Цифры слева от сцен это индексы Нумерация индексов начинается так же, как и у массива, то есть с нуля.
Загружать нужные сцены мы можем, как при помощи индексов, так и при помощи имен сцен. Сегодня мы попробуем только первый способ. Так что чтобы не пропустить второй способ - ставьте колокольчик.
Зачем нужен SceneManager
Сделаем так, чтобы когда игрок входил в триггер, который мы сделали на прошлом уроке, у нас грузилась следующая сцена. Для этого открываем скрипт `BottomArea`.
Для того, чтобы работать со сценами через скрипт, сверху подключим пространство имен `SceneManagment`, в котором располагаются все классы. Чтобы это сделать, сверху скрипта, пишем ключевое слово `using`, а дальше - пространство имен `UnityEngine.SceneManagment`.
После этого скрипт готов к работе со сценами!
Для выполнения загрузки следующей сцены в триггере, вместо вывода сообщения в консоль, надо обратиться к классу `SceneManager`. При помощи данного класса мы будем осуществлять все основные манипуляция со сценами. Вызываем метод загрузки сцены, под названием `LoadScene()`, в который передаем в качестве аргумента имя или индекс загружаемый сцены. Сейчас мы находимся на первой сцене, поэтому мы можем указать имя `Level 2`, или же просто индекс `1`.
А вот чтобы скрипт мог выполняться на абсолютно любой сцене и при этом загружать следующую, перед строчкой загрузки, следует получить индекс сцены на которой мы сейчас находимся. Для этого делаем переменную типа данных `int` и называем ее `index` . Через знак равно, обращаемся к классу `SceneManager` и вызываем у него метод `GetActiveScene()`, который вернет данные о текущей сцене. А уже у полученной сцены, берем `buildIndex` и прибавляем к нему единицу, чтобы шла загрузка следующей сцены.
Теперь, если мы сохраним проект нажав горячие клавиши `ctr + shift + s`, откроем Unity и запустим проект в игровом режиме, то при входе в Trigger нас будет перебрасывать на следующую сцену.
Домашние задание
Сделать механику игры, в которой игроку нужно пройти лабиринт. Если игрок соприкасается с препятствием, то сцена перезапускается, а если игрок доходит до красной линии, то загружается следующая сцена.
Если вдруг вы не знаете как сделать упражнение или у вас возникнет проблема - можно найти проект с готовым решением по ссылке в описании.
А на этом, урок подошел к концу, пожалуйста не забудьте оценить этот урок лайком и подписаться.
Subscription levels2

На еду и коммуналку

$0.65 per month
Просто для тех, кто не безразличен к благодарности за контент. Мы делаем мы стараемся,Ю и, если это кому-то нужно, то welcome.

Для любителей по-глубже

$1.29 per month
Тут будет эксклюзив для тех, кто хочет углубится в изучение UNITY. А вдруг есть им такие тут?))
Go up