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

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

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

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

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

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

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

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

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

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

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

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

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;

public class SceneChanger : MonoBehaviour
{
	public void ChangeScene(string sceneName)
	{
		SceneManager.LoadScene (name);
	}
	public void Exit()
	{
		Application.Quit ();
	}
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Появится следующее:

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

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

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

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

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

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

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

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

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

Видео

Поделиться или сохранить к себе:
Технологичная помощь
Добавить комментарий

Нажимая на кнопку "Отправить комментарий", я даю согласие на обработку персональных данных, принимаю Политику конфиденциальности и условия Пользовательского соглашения.

  1. Сергей

    Поправьте ваш код в месте ввода имени сцены — SceneManager.LoadScene (name); на SceneManager.LoadScene (sceneName); , мне это помогло запустить код

    Ответить
    1. Игорь

      Боже спасибо вам огромное
      Час пытался разобраться почему не работает

      Ответить