Как перейти на другую сцену в unity
Перейти к содержимому

Как перейти на другую сцену в unity

Glavak / SceneTransition.cs

This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters

using UnityEngine ;
using UnityEngine . SceneManagement ;
using UnityEngine . UI ;
public class SceneTransition : MonoBehaviour
<
public Text LoadingPercentage ;
public Image LoadingProgressBar ;
private static SceneTransition instance ;
private static bool shouldPlayOpeningAnimation = false ;
private Animator componentAnimator ;
private AsyncOperation loadingSceneOperation ;
public static void SwitchToScene ( string sceneName )
<
instance . componentAnimator . SetTrigger ( " sceneClosing " );
instance . loadingSceneOperation = SceneManager . LoadSceneAsync ( sceneName );
// Чтобы сцена не начала переключаться пока играет анимация closing:
instance . loadingSceneOperation . allowSceneActivation = false ;
instance . LoadingProgressBar . fillAmount = 0 ;
>
private void Start ()
<
instance = this ;
componentAnimator = GetComponent < Animator >();
if ( shouldPlayOpeningAnimation )
<
componentAnimator . SetTrigger ( " sceneOpening " );
instance . LoadingProgressBar . fillAmount = 1 ;
// Чтобы если следующий переход будет обычным SceneManager.LoadScene, не проигрывать анимацию opening:
shouldPlayOpeningAnimation = false ;
>
>
private void Update ()
<
if ( loadingSceneOperation != null )
<
LoadingPercentage . text = Mathf . RoundToInt ( loadingSceneOperation . progress * 100 ) + " % " ;
// Просто присвоить прогресс:
// LoadingProgressBar.fillAmount = loadingSceneOperation.progress;
// Присвоить прогресс с быстрой анимацией, чтобы ощущалось плавнее:
LoadingProgressBar . fillAmount = Mathf . Lerp ( LoadingProgressBar . fillAmount , loadingSceneOperation . progress ,
Time . deltaTime * 5 );
>
>
public void OnAnimationOver ()
<
// Чтобы при открытии сцены, куда мы переключаемся, проигралась анимация opening:
shouldPlayOpeningAnimation = true ;
loadingSceneOperation . allowSceneActivation = true ;
>
>

You can’t perform that action at this time.

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.

Переход между сценами в Unity по кнопке

В этом уроке мы затронем библиотеку Scene Management, чтобы сделать переход между сценами по кнопке. Это одна из самых простых вещей, но она необходима для создания игры.

Давайте начнем. Для начала создадим в ассетах 2 новые сцены и назовем их «Scene1» и «Scene2».

Переход между сценами в Unity по кнопке, изображение №1

Чтобы создать новую сцену, щелкните правой кнопкой мыши по панели ассетов и выберите Create > Scene.

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

Обычно, когда сцена сменяется от одной к другой, все экземпляры игровых объектов, сценариев и т. д., принадлежащие этой сцене, уничтожаются, а загружаются экземпляры из новой. Другой метод заключается в использовании функции DontDestroyOnLoad (), которая будет поддерживать ссылку на объект при смене сцены, но об этом следует поговорить в другом уроке.

Создание объекта и префаба SceneChanger

Итак, вернемся в Unity, на вкладке иерархии в «Scene1» создадим пустой объект и назовем его «SceneChanger».

Теперь добавим скрипт к объекту «SceneChanger» и назовем его «SceneChanger».

Откроем скрипт в Visual Studio и напишем следующий код:

Далее необходимо создать префаб , для этого просто выберите объект в иерархии и перетащите его в папку «Assets» на вкладке «Project» . После этого вы увидите синий куб с тем же именем объекта.

Переход между сценами в Unity по кнопке, изображение №2

Создание пользовательского интерфейса

В пользовательском интерфейсе у нас будет текстовый объект с указанием названия сцены и кнопка, которая будет изменять сцену.

Итак, щелкните правой кнопкой мыши на вкладке Hierarchy и выберите UI> Panel .

Снова щелкните правой кнопкой мыши на вкладке Hierarchy и выберите UI> Text .

Еще раз щелкните правой кнопкой мыши на вкладке Hierarchy и выберите UI> Button .

Ваш конечный результат должен выглядеть примерно так

Переход между сценами в Unity по кнопке, изображение №3

Изменим текст на «THIS IS SCENE 1» и текст в кнопке на «CHANGE SCENE». Результат выглядит следующим образом:

Переход между сценами в Unity по кнопке, изображение №4

Далее необходимо выбрать объект Button в Иерархии. На вкладке инспектора нажмем значок «плюс» в компоненте «Button».

Переход между сценами в Unity по кнопке, изображение №5

Переход между сценами в Unity по кнопке, изображение №6

Перетащим объект SceneChanger из иерархии в ссылку на объект (выделено красным цветом)

Переход между сценами в Unity по кнопке, изображение №7

Теперь нужно выбрать функцию (выделено красным). В раскрывающемся списке выберите SceneChanger> ChangeScene (string).

Переход между сценами в Unity по кнопке, изображение №8

Теперь вы увидите пустое место под раскрывающимся списком функций. Введите в нем «Scene2». Здесь мы выбрали объект SceneChanger и получили доступ к функции ChangeScene (). «Scene2» является входом. Теперь при каждом нажатии кнопки вызывается функция ChangeScene (), и сцена меняется на «Scene2» .

Cделайте то же самое для «Scene2», но введите «Scene1» в качестве входа и измените текст в Scene2 соответствующим образом.

Сейчас нужно добавить сцены в Build Settings в File menu . Это необходимо, так как без этого Unity не распознает cцены, и между ними не произойдет никакого перехода.

Нажмите на кнопку воспроизведения. Нажатие на кнопку в сцене приведет к переходу к другой сцене.

Переход между сценами в Unity по кнопке

В этом уроке мы затронем библиотеку Scene Management, чтобы сделать переход между сценами по кнопке. Это одна из самых простых вещей, но она необходима для создания игры.

Давайте начнем. Для начала создадим в ассетах 2 новые сцены и назовем их «Scene1» и «Scene2».

Чтобы создать новую сцену, щелкните правой кнопкой мыши по панели ассетов и выберите Create > Scene.

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

Обычно, когда сцена сменяется от одной к другой, все экземпляры игровых объектов, сценариев и т. д., принадлежащие этой сцене, уничтожаются, а загружаются экземпляры из новой. Другой метод заключается в использовании функции DontDestroyOnLoad (), которая будет поддерживать ссылку на объект при смене сцены, но об этом следует поговорить в другом уроке.

Создание объекта и префаба SceneChanger

Итак, вернемся в Unity, на вкладке иерархии в «Scene1» создадим пустой объект и назовем его «SceneChanger».

Теперь добавим скрипт к объекту «SceneChanger» и назовем его «SceneChanger».

Откроем скрипт в Visual Studio и напишем следующий код:

Далее необходимо создать префаб , для этого просто выберите объект в иерархии и перетащите его в папку «Assets» на вкладке «Project» . После этого вы увидите синий куб с тем же именем объекта.

Теперь сохраните сцену и дважды щелкните «Scene2» . В этой сцене необходимо скопировать префаб SceneChanger. Для этого просто перенесем его во вкладку иерархии.

Создание пользовательского интерфейса

В пользовательском интерфейсе у нас будет текстовый объект с указанием названия сцены и кнопка, которая будет изменять сцену.

Итак, щелкните правой кнопкой мыши на вкладке Hierarchy и выберите UI> Panel .

Снова щелкните правой кнопкой мыши на вкладке Hierarchy и выберите UI> Text .

Еще раз щелкните правой кнопкой мыши на вкладке Hierarchy и выберите UI> Button .

Ваш конечный результат должен выглядеть примерно так

Изменим текст на «THIS IS SCENE 1» и текст в кнопке на «CHANGE SCENE». Результат выглядит следующим образом:

Далее необходимо выбрать объект Button в Иерархии. На вкладке инспектора нажмем значок «плюс» в компоненте «Button».

Перетащим объект SceneChanger из иерархии в ссылку на объект (выделено красным цветом)

Теперь нужно выбрать функцию (выделено красным). В раскрывающемся списке выберите SceneChanger> ChangeScene (string).

Теперь вы увидите пустое место под раскрывающимся списком функций. Введите в нем «Scene2». Здесь мы выбрали объект SceneChanger и получили доступ к функции ChangeScene (). «Scene2» является входом. Теперь при каждом нажатии кнопки вызывается функция ChangeScene (), и сцена меняется на «Scene2» .

Cделайте то же самое для «Scene2», но введите «Scene1» в качестве входа и измените текст в Scene2 соответствующим образом.

Сейчас нужно добавить сцены в Build Settings в File menu . Это необходимо, так как без этого Unity не распознает cцены, и между ними не произойдет никакого перехода.

Нажмите на кнопку воспроизведения. Нажатие на кнопку в сцене приведет к переходу к другой сцене.

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

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