Unity как загрузить сцену
Перейти к содержимому

Unity как загрузить сцену

  • автор:

Scenes

Сцены содержат объекты вашей игры. Они могут использоваться для создания главного меню, отдельных уровней и для других целей. Можно считать каждый файл сцены отдельным игровым уровнем. В каждой сцене можно разместить объекты окружения, заграждения, декорации, по кусочкам создавая дизайн и саму игру.

A new empty scene, with the default 3D objects - a camera and a directional light.

When you create a new Unity project, your scene view will show a new Scene. This is an untitled and unsaved scene. The scene will be empty except for defult objects — either an orthographic camera, or a perspective camera and a directional light, depending on whether you started the project in 2D or 3D mode.

To save the scene you’re currently working on, choose File > Save Scene from the menu, or pres Ctrl/Cmd + S.

Scenes are saved as assets, into your project’s Assets folder. Therefore they appear in the Project Window, just like any other asset.

Some scene assets, saved and visible in the project view

To open a scene, in order to begin or continue working within that scene, double-click the scene asset in the Project Window.

If your current scene contains unsaved changes, you will be prompted to save or discard the changes.

Multi-Scene Editing.

It is possible to have multiple scenes open for editing at one time. For more information about this, see Multi-Scene Editing.

Как загрузить конкретную сцену в unity2D?

Например если нажать кнопку F1, вот мой код, но загружает следущие сцены, это не очень удобно. Пж не пишите что то типо ищи в гугле.

void Update()
if (Input.GetKey(KeyCode.F1))
SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex + 1);
>
>

  • Вопрос задан более двух лет назад
  • 573 просмотра

1 комментарий

Простой 1 комментарий

Нужно сделать СЦЕНУ для ЗАГРУЗКИ СЦЕН в unity

Короче говоря, нужно сделать так : есть сцена Menu, на ней ест кнопка, которая запускает функцию, которая в свою очередь грузит «легкую» сцену LoadingScreen с индикатором (Текстовый объект), который будет отображать прогресс загрузки более сложной сцены (Game). Вопрос в том как передать название сцены со сцены Menu на LoadingScreen, которая начнет грузить эту самую сцену.

Отслеживать

задан 23 мар 2020 в 11:52

21 6 6 бронзовых знаков

сохраняйте его через PlayerPrefs

25 мар 2020 в 16:56

А вообще есть вариант попроще. Не обязательно грузить новую сцену для загрузки большой сцены. Просто делайте панель загрузки поверх всех окон

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

Как сделать многоуровневую игру в Unity? Или игру, в которой игрок может перемещаться (телепортировать) между локациями?

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

Шаг 1. Создать сцены для каждого уровня и пр. составляющих игры. Продумать понятную и гибкую систему идентификации файлов сцен

Например, сцены могут иметь следующие имена:

  • StartScene – стартовая сцена игры. Это может быть сцена, в которой игрок знакомится с правилами игры, может изменить некоторые начальные настройки, выбрать персонажа и т.д.
  • Layer1,Layer2,Layer3, … — сцены, соответствующие 1-му, 2-му, 3-му и т.д. уровням игры.
  • EndGame – конечная сцена, которая загружается в финале игры.

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

Например, следующий уровень может загружаться при следующих возможных условиях:

а) игрок набрал определённое количество баллов. Это условие имеет смысл проверять каждый кадр в методе Update();

б) игрок добрался до определенного места в игре. Например, пришёл к заданной двери. Соответственно на объекте двери необходимо поставить коллайдер, и при входе в этот коллайдер должна будет выполняться загрузка сцены;

в) в интерфейсе игры имеются кнопки загрузки разных «уровней». Такая ситуация возможна в нескольких случаях:

Family Island - меню выбора островов для путешествий и приключений

Когда речь идёт не столько об уровнях игры, сколько о разных локациях, между которыми игрок имеет возможность перемещаться. Пример такой игры – Family Island – там игрок может путешествовать на различные острова.

Candy Crush Saga - карта игры с выбором уровней

Второй вариант геймплея с аналогичным функционалом – наличие в реализации отдельной сцены с картой игры. Кликая по определённым зонам-кнопкам этой игры, игрок загружает соответствующий уровень (при условии, что этот уровень для него открыт). Наиболее популярный пример такой игры – Candy Crush Saga и ей подобные.

г) другие варианты или комбинации перечисленных вариантов. Например, для варианта а) при достижении игроков определённых результатов новый уровень может загружаться не сразу, автоматически, а после нажатия игроком на появляющуюся кнопку наподобие «Следующий уровень». Аналогично – для варианта б) – входим в коллайдер двери и видим кнопку «Войти» и т.п.

Шаг 3. Написание функции (метода) загрузки соответствующей сцены.

Для загрузки сцен в движке Unity предусмотрен метод LoadScene (…) из класса SceneManager пространства имён UnityEngine.SceneManagement.

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

Далее, при вызове метода следует указывать и имя класса:

У данного метода есть несколько перегрузок (вариантов вызова с различными наборами параметров), подробнее о которых можно почитать в официальной документации Unity.

Наиболее простые способы вызова метода следующие.

Вариант 1 – с явным указанием имени загружаемой сцены в качестве параметра. Например:

Вариант 2 – с указанием индекса загружаемой сцены в качестве параметра. Например:

Индекс – это число-порядковый номер сцены, который автоматически присваивается в окне настроек Build Settings:

Окно настроек Build Settings Unity

Один из возможных вариантов скрипта следующий:

 using UnityEngine; using UnityEngine.SceneManagement; public class Teleport : MonoBehaviour < public int n_scene = 1; // индекс загружаемой сцены по умолчанию, который в редакторе можно изменить void OnTriggerEnter(Collider col) // вход в коллайдер-триггер объекта-двери или телепорта < if (col.tag.Equals("Player")) // если это объект с тегом "Player" < SceneManager.LoadScene(n_scene); // загружаем сцену с заданным индексом >> > 

Этот скрипт должен быть на объектах-дверях или телепортах. На них же должен стоять коллайдер-триггер.

Шаг 4. Заполнить раздел Scenes In Build в окне настроек Build Settings, внеся туда все сцены, которые необходимо будет загружать

Пример этого окна представлен выше. Чтобы его вызвать, используется главное меню, пункты File -> Build Settings...

Меню File -></p>
<p> Build Settings. Unity» width=»280″ height=»300″ /></p>
<h4>Шаг 5. Не забыть прикрепить скрипт(ы) к соответствующим игровым объектам на сцене</h4>
<p>Как это сделать, знает любой новичок 😉</p>
<h3>Загрузка сцен в Unity: 2 комментария</h3>
<p>а) игрок набрал определённое количество баллов. Это условие имеет смысл проверять каждый кадр в методе Update(); Что? Зачем? Вообще смысла не имеет. В игре должен быть обработчик в коде который зачисляет очки и вот там, когда к нему приходит команда зачислить x очков, и надо проверять это x на нужное количество для прохождения. А так как тут написано делают первоклашки на геймджемах и для них (геймджемов) это нормально.</p>
<p><b>Ellioka</b> :<br />
ВЫ абсолютно правы, Сергей. Благодарю! Этот урок как раз и написан для «первоклашек» 🙂</p>
<p><img decoding=

Проекты

Творческое программирование для всех! (игры и анимация на Scratch)

Творческое программирование для всех! (игры и анимация на Scratch)
Бесплатные уроки для детей и взрослых

  • Контакты
  • Ольга Елисеева — Автор учебников, наставник, тренер, консультант
  • О проекте АЭЛИТ
  • Публичная оферта
  • Политика конфиденциальности
  • Пользовательское соглашение
  • Публичная лицензия на электронные версии книг

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *