Четверг, 25 Апреля 2024, 09:46

Приветствую Вас Гость

Меню сайта
Категории каталога
Создание игр [355]
Статьи об общих понятиях связанных с созданием игр.
Программирование [82]
Гайды по программированию на разных ЯП.
Движки и Гейммейкеры [145]
Статьи о программах для создания игр, уроки и описания.
Софт [43]
Различные программы, в том числе в помощь игроделам.
2D-графика [14]
Уроки по рисованию, растр, пиксель-арт, создание спрайтов и пр.
3D-графика [16]
Уроки по моделированию, ландшафт, модели, текстурирование и пр.
Моддинг игр [5]
Модификация компьютерных игр, создание дополнений, перевод, хакинг.
Игры [161]
Статьи об играх, в том числе и сделанных на гейммейкерах.
Разное [129]
Статьи, которые не вошли в определённые разделы.
Наш опрос
Игры какого жанра вы предпочитаете делать?
Всего ответов: 14611
Главная » Статьи » Создание игр

Unity3D - ставим игру на паузу
Решил заняться переводом англоязычных уроков по Unity3D специально для gcup.ru
Что же делать, если необходимо поставить игру на паузу? Давайте рассмотрим подробно каждое действие.
Сначала вам нужно создать объект, на котором будет "висеть" наш скрипт. Я рекомендую создать новый отдельный пустой объект.
Вкладка GameObject -> Create Empty. Для примера, назовем наш объект Manager.
Этот объект будет носить наш скрипт.
Приступим непосредственно к написанию скрипта.
Создайте новый скрипт
Вкладка Project -> Create -> Javascript.
Откройте созданный файл двойным кликом.
Сначала нам нужно создать булевую переменную, чтобы определять, стоит ли игра на паузе или нет.
По умолчанию зададим ей значение false.
Code
var paused : boolean = false;

Далее в функции Update проверим, нажата ли клавиша (в нашем случае - левая кнопка мыши)
Code
function Update () {
  if(Input.GetButtonUp("Fire1")){

Если клавиша нажата и переменная paused равна false, то меняем значение переменной на true и останавливаем игровое время.
Code
if(Input.GetButtonUp("Fire1")){
  if(!paused){
  Time.timeScale = 0;
  paused=true;
}

Теперь мы можем ставить нашу игру на паузу. Но ведь нужно же еще и научиться возвращать привычный ход игрового времени?
Дополняем проверку переменной paused. Если переменная равна true и нажата кнопка - меняем ее значение на false и запускаем игровое время.
Команда Time.timeScale = x может иметь значение x от 0 до 1. 0 - время остановлено, 1 - соответственно, время идет как ему и полагается.
Code
else{
  Time.timeScale = 1;
  paused=false;

Проверяем:
Code

var paused : boolean = false;
   
function Update () {
  if(Input.GetButtonUp("Fire1")){
  if(!paused){
  Time.timeScale = 0;
  paused=true;
  }else{
  Time.timeScale = 1;
  paused=false;
  }
  }
}

Если вы все сделали правильно, то теперь вы можете ставить вашу игру на паузу по нажатию кнопки.
Спасибо за внимание!
Категория: Создание игр | Добавил: MadMax52 (12 Мая 2012) | Автор: Газизов Максим.
Просмотров: 53028 | Комментарии: 15 | Рейтинг: 3.3/11 |
Теги: Пауза, Урок, Unity, Стоп, javascript, Paused, Pause, остановка, Unity3D, юнити
Дополнительные опции:
Также если вы считаете, что данный материал мог быть интересен и полезен кому-то из ваших друзей, то вы бы могли посоветовать его, отправив сообщение на e-mail друга:

Игровые объявления и предложения:
Если вас заинтересовал материал «Unity3D - ставим игру на паузу», и вы бы хотели прочесть что-то на эту же тему, то вы можете воспользоваться списком схожих материалов ниже. Данный список сформирован автоматически по тематическим меткам раздела. Предлагаются такие схожие материалы: Если вы ведёте свой блог, микроблог, либо участвуете в какой-то популярной социальной сети, то вы можете быстро поделиться данной заметкой со своими друзьями и посетителями.

Всего комментариев: 15
+0-
15 Negiss   (17 Марта 2014 23:19) [Материал]
NegissКто может помочь? Нужно, чтобы при паузе остальные скрипты останавливались.

+0-
14 EchoIT   (21 Сентября 2012 14:55) [Материал]
EchoITПлохая пауза. Ведь все остальные скрипты продолжают работать.

+0-
13 JHawk   (25 Мая 2012 19:17) [Материал]
JHawkчто то не разобрался(

+0-
7 romgerman   (22 Мая 2012 00:34) [Материал]
romgermanБыло бы неплохо сделать меню при паузе, а то уже мучаюсь давненько. А так хорошая статья.

+1-
12 MyACT   (24 Мая 2012 17:46) [Материал]
MyACTНу это же легко smile
Через GUI

+0-
6 MyACT   (20 Мая 2012 07:31) [Материал]
MyACTПеревел за 5 минут скрипт на C#
Code

using UnityEngine;
using System.Collections;

public class Pause : MonoBehaviour {
public bool paused;
  // Use this for initialization
  void Start () {
  
  }
  
  // Update is called once per frame
  void Update () {
  if(Input.GetKeyUp(KeyCode.Escape)){  
  if(!paused){  
  Time.timeScale = 0;  
  paused=true;  
  }else{  
  Time.timeScale = 1;  
  paused=false;  
  }
  }
  }
}

Мало-ли кому пригодится biggrin

+-3-
8 romgerman   (22 Мая 2012 00:36) [Материал]
romgermanЭто было слишком легко smile Зайти на сайт и скопировать скрипт.

+1-
9 Novatorvlad   (22 Мая 2012 04:11) [Материал]
Novatorvladспс за сайт x)

+-2-
10 romgerman   (22 Мая 2012 22:07) [Материал]
romgermanНе за что. Правда плохо, что нет обратного конвертера из шарпа в жс.

+-1-
11 MyACT   (24 Мая 2012 17:45) [Материал]
MyACTПффф,а вручную слабо? biggrin

+-1-
4 Pingwinof   (13 Мая 2012 06:35) [Материал]
Pingwinofя не понял, так чтоль на пробел жать для паузы???

+1-
5 MadMax52   (13 Мая 2012 09:38) [Материал]
MadMax52Вы можете заменить кнопки "Jump" и "Fire1" на любые, которые вам необходимы.http://unity3d.com/support/documentation/ScriptReference/KeyCode.html
Просто когда переводил, решил что будет нагляднее использовать ЛКМ вместо пробела, а конечный скрипт исправить забыл.

+1-
2 Fr0sT   (12 Мая 2012 16:52) [Материал]
Fr0sTБлин,жалко Javascript.

+3-
3 Nekit_Aut   (12 Мая 2012 17:51) [Материал]
Nekit_AutТак перевести же легко!

+3-
1 Nekit_Aut   (12 Мая 2012 12:48) [Материал]
Nekit_AutМногим новичкам может пригодиться. Но можно было бы дополнить статью smile ... Допустим окно или меню паузы как добавить написал бы wink

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Поиск по сайту
10 случ. движков
  • Panda3D
  • Litiengine
  • CraftStudio
  • Godot
  • Flicksy
  • Existence Engine
  • ZGameEditor
  • Asphyre Sphinx
  • Delta Engine
  • Minko
  • Друзья сайта
    Игровой форум GFAQ.ru Перевод консольных игр
    Все права сохранены. GcUp.ru © 2008-2024 Рейтинг