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

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.

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.
Переход между сценами
Приветствую! В данной статье мы разберём несколько способов перехода между сценами, а именно:
- Смена сцен по названию.
- Смена сцен по индексам.
- Смена сцен, используя параметры.
Смена сцен по названию
Данный способ самый простой, и встречается он очень часто. Он используется тогда, когда нам необходимо перейти точно на определённую сцену. Для этого создадим C# скрипт, с названием, например, Scenes. И пропишем в нём следующий код:
using UnityEngine; using UnityEngine.SceneManagement; public class Scenes : MonoBehaviour < public void OpenMenu() < SceneManager.LoadScene("Menu"); >public void OpenGame() < SceneManager.LoadScene("Game"); >>
Разбор кода
Обратите внимание, что при работе со сценами, нам необходимо обязательно подключить библиотеку:
using UnityEngine.SceneManagement;
Дальше мы создаём функцию OpenMenu(), которая будет загружать сцену с названием Menu. Вторая функция с названием OpenGame() загружаем сцену с названием Game. Убедитесь, что сцены с такими названиями существуют в Вашем проекте.
Как видите, всё очень просто. Условия, при которых Вы будете запускать данные функции, могут быть совсем разные. Например: клик на клавишу «Esc», здоровье персонажа меньше нуля, и тд. Пример:
if(HealthUser
Смена сцен по индексам
Данный способ аналогичен предыдущему, за исключением того, что мы вместо названий сцен, используем их индексы. Данный способ полезен в тех случаях, когда нам необходимо перейти на следующую или предыдущую сцену. Создадим C# скрипт, с названием, например, Scenes. И пропишем в нём следующий код:
using UnityEngine; using UnityEngine.SceneManagement; public class Scenes : MonoBehaviour < public void OpenMenu() < SceneManager.LoadScene(0); >public void OpenGame() < SceneManager.LoadScene(1); >>
Как видите, код аналогичен предыдущему, поэтому разбирать мы его не будем. Единственное что хотелось бы отметить, что благодаря функциям, у нас открываются чуть больше возможностей перехода на сцены. Например, мы можем перейти на следующую или предыдущую функцию:
using UnityEngine; using UnityEngine.SceneManagement; public class Scenes : MonoBehaviour < public void NextLevel() < var index = SceneManager.GetActiveScene().buildIndex; SceneManager.LoadScene(index + 1); >public void PreviousLevel() < var index = SceneManager.GetActiveScene().buildIndex; SceneManager.LoadScene(index - 1); >>
Разбор кода
Строчки в функции NextLevel():
var index = SceneManager.GetActiveScene().buildIndex; SceneManager.LoadScene(index + 1);
В первой строчке мы в переменную index мы заносим тот индекс сцены, в котором мы находимся в данный момент. А уже во второй строчке, мы увеличиваем индекс нашей сцены на единицу, и запускаем таким образом следующую сцену.
В функции PreviousLevel() всё аналогично, только индекс мы не увеличиваем на единицу, а уменьшаем. Тем самым запускаем предыдущую сцену.
Обратите внимание! Перед тем как работать со сценами по их индексам, нам необходимо добавить все сцены в Build Settings. Для этого жмём на вкладку File — Build Settings. Далее перетаскиваем все свои сцены в область Scenes in Build, и расставляем их по порядку. После чего просто закрываем данное окно. Теперь можно спокойно работать с индексами.

Смена сцен, используя параметры
Данный способ аналогичен предыдущему, только здесь мы переходим на определённую сцену исходя из переданного аргумента в нашу функцию.
using UnityEngine; using UnityEngine.SceneManagement; public class Scenes : MonoBehaviour < public void GoToLevel(int number) < SceneManager.LoadScene(number); >>
Разбор кода
Функция GoToLevel() принимает в качестве аргумента номер индекса, который нам необходимо открыть, и заносит его в переменную number. Этот метод защитит нас от дублирования однотипных функций, которые по идее выполняют одно и тоже.
Давайте теперь попробуем выполнить функцию GoToLevel(), передав ей аргумент «1» следующим образом:
GoToLevel(1)
Конечно же, в качестве аргумента мы можем передать не только индекс, но и название. Поэтому используя открытие сцены через аргумент функции, Вы можете работать как с индексами, так и с названиями сцен.
Если Вам понравилась сцена, буду рад Вашим лайкам.
Сочетания клавиш Unity
Это обзор горячих клавиш Unity, установленных по умолчанию. Вы также можете скачать таблицу в формате PDF для Windows и MacOSX. Если сочетание клавиш содержит CTRL/CMD, это означает, что нужно использовать клавишу Control на Windows или клавишу Command на MacOSX.
| Tools | |
| “Горячая” клавиша | Действие |
| Q | Pan (перемещение камеры сцены) |
| W | Move (перемещение) |
| E | Rotate (вращение) |
| R | Scale (масштабирование) |
| T | Rect Tool |
| Z | Pivot Mode toggle (переключение Pivot-режима) |
| X | Pivot Rotation Toggle (переключение поворота пивота) |
| V | Vertex Snap (привязка вершин) |
| CTRL/CMD+ЛКМ | Snap (привязка) |
| GameObject | |
| CTRL/CMD+SHIFT+N | Создать новый игровой объект |
| ALT+SHIFT+N | New empty child to selected game object |
| CTRL/CMD+ALT+F | Переместить объект к точке вида |
| CTRL/CMD+SHIFT+F | Выровнить по виду |
| SHIFT+F или двойное F | Привязывает камеру окна Scene View к выбранному игровому объекту |
| Window (окно) | |
| CTRL/CMD+1 | Scene (сцена) |
| CTRL/CMD+2 | Game (игра) |
| CTRL/CMD+3 | Inspector (инспектор) |
| CTRL/CMD+4 | Hierarchy (иерархия) |
| CTRL/CMD+5 | Project (проект) |
| CTRL/CMD+6 | Animation (анимация) |
| CTRL/CMD+7 | Profiler (профайлер) |
| CTRL/CMD+9 | Магазин ассетов |
| CTRL/CMD+0 | Version Control |
| CTRL/CMD+SHIFT+C | Console (консоль) |
| Edit | |
| CTRL/CMD+Z | Отменить |
| CTRL+Y (только на Windows) | Повторить |
| CMD+SHIFT+Z (только на Mac) | Повторить |
| CTRL/CMD+X | Вырезать |
| CTRL/CMD+C | Копировать |
| CTRL/CMD+V | Вставить |
| CTRL/CMD+D | Дублировать |
| SHIFT+Del | Удалить |
| F | Центрировать камеру сцены на объекте |
| CTRL/CMD+F | Найти |
| CTRL/CMD+A | Выбрать все |
| CTRL/CMD+P | Играть |
| CTRL/CMD+SHIFT+P | Пауза |
| CTRL/CMD+ALT+P | Шаг |
| Selection (выделение) | |
| CTRL/CMD+SHIFT+1 | Загрузить выделение 1 |
| CTRL/CMD+SHIFT+2 | Загрузить выделение 2 |
| CTRL/CMD+SHIFT+3 | Загрузить выделение 3 |
| CTRL/CMD+SHIFT+4 | Загрузить выделение 4 |
| CTRL/CMD+SHIFT+5 | Загрузить выделение 5 |
| CTRL/CMD+SHIFT+6 | Загрузить выделение 6 |
| CTRL/CMD+SHIFT+7 | Загрузить выделение 7 |
| CTRL/CMD+SHIFT+8 | Загрузить выделение 8 |
| CTRL/CMD+SHIFT+9 | Загрузить выделение 9 |
| CTRL/CMD+ALT+1 | Сохранить выделение 1 |
| CTRL/CMD+ALT+2 | Сохранить выделение 2 |
| CTRL/CMD+ALT+3 | Сохранить выделение 3 |
| CTRL/CMD+ALT+4 | Сохранить выделение 4 |
| CTRL/CMD+ALT+5 | Сохранить выделение 5 |
| CTRL/CMD+ALT+6 | Сохранить выделение 6 |
| CTRL/CMD+ALT+7 | Сохранить выделение 7 |
| CTRL/CMD+ALT+8 | Сохранить выделение 8 |
| CTRL/CMD+ALT+9 | Сохранить выделение 9 |
| Assets (ассеты) | |
| CTRL/CMD+R | Обновить |
Customizing Your Workspace (Настройка рабочего пространства)
Загрузить текущую сцену Unity
По идее GetActiveScene — это метод. А вы обращаетесь к нему как к свойству. То есть, минимум, нужно писать так: SceneManager.GetActiveScene() . Это как вступление-отступление.
Далее. Метод GetActiveScene возвращает объект типа Scene у которого, как можно увидеть пройдя по ссылке в документацию, есть поле name, которое возвращает имя сцены.
Соответственно, зная это, вам нужно написать так:
SceneManager.LoadScene(SceneManager.GetActiveScene().name);
Отслеживать
ответ дан 3 сен 2016 в 13:32
Алексей Шиманский Алексей Шиманский
73.5k 12 12 золотых знаков 93 93 серебряных знака 182 182 бронзовых знака
- c#
- unity3d
-
Важное на Мете
Связанные
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.4.29.8372