Cкрипт Паузы в Unity 5.
Пауза, при создании любой игры, является неотъемлемой частью интерфейса. Через меню паузы можно реализовать такие функции игры как:
- сохранение или загрузка,
- выход в меню или на рабочий стол,
- переход в меню настройки игры,
- или просто остановка игры.
В этом скрипте мы реализуем остановку игры и выход в главное меню. Для этого нам понадобится в проекте создать две сцены и С# скрипт, в котором пишем вот такие строки:
using UnityEngine; using System.Collections; public class puse : MonoBehaviour { public float timer; public bool ispuse; public bool guipuse; void Update() { Time.timeScale = timer; if (Input.GetKeyDown(KeyCode.Escape) && ispuse == false) { ispuse = true; } else if (Input.GetKeyDown(KeyCode.Escape) && ispuse == true) { ispuse = false; } if (ispuse == true) { timer = 0; guipuse = true; } else if (ispuse == false) { timer = 1f; guipuse = false; } } public void OnGUI() { if (guipuse == true) { Cursor.visible = true;// включаем отображение курсора if (GUI.Button(new Rect((float)(Screen.width / 2), (float)(Screen.height / 2) - 150f, 150f, 45f), "Продолжить")) { ispuse = false; timer = 0; Cursor.visible = false; } if (GUI.Button(new Rect((float)(Screen.width / 2), (float)(Screen.height / 2) - 100f, 150f, 45f), "Сохранить")) { } if (GUI.Button(new Rect((float)(Screen.width / 2), (float)(Screen.height / 2) - 50f, 150f, 45f), "Загрузить")) { } if (GUI.Button(new Rect((float)(Screen.width / 2), (float)(Screen.height / 2), 150f, 45f), "В Меню")) { ispuse = false; timer = 0; Application.LoadLevel("Menu"); // здесь при нажатии на кнопку загружается другая сцена, вы можете изменить название сцены на свое } } } }
Здесь все просто. Две переменные, одна из которых будет при нажатии на ESC останавливать время, а вторая, при остановке времени будет выводить на экран кнопки меню.
Весь скрипт построен, по сути, на одной функции :
Time.timeScale = timer
TimerScale является, как бы, своеобразными часами которые при значении 1 работают в нормальном режиме и время проходит как обычно, при значении 0,5 время замедляется в 2 раза, а при значении 0 время вообще останавливается. Этим и воспользуемся для создания паузы.
Создадим в проекте пустышку и поместим на нее наш скрипт. При нажатии на ESC игра остановится и на экране появится меню паузы с кнопками, которые пока не все активны. Так же, при нажатии на кнопку «В меню» можно перейти на другую сцену где будет реализовано ваше основное меню игры.
На этом все. Удачных проектов!
На функцию
Application.LoadLevel( );
Юнити 5 ругается как на устаревшую.
У них на сайте рекомендуют использовать SceneManager.LoadScene( ). При этом нужно будет подключить библиотеку SceneManagement.
using UnityEngine.SceneManagement;
. . .
SceneManager.LoadScene( );