Пауза приложения (StandAlone)

Программирование на Юнити.

Пауза приложения (StandAlone)

Сообщение ziat 05 дек 2009, 09:45

Вопрос а как реализовать паузу.
В манулае покопался но не нашёл из функций ничего подходящего.
или плохо искал?
ziat
UNITрон
 
Сообщения: 199
Зарегистрирован: 07 окт 2009, 21:28
  • Сайт

Re: Пауза приложения (StandAlone)

Сообщение Neodrop 05 дек 2009, 10:58

Плохо искал.

Time.timeScale = 0;
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Пауза приложения (StandAlone)

Сообщение BORODA 17 фев 2010, 16:12

А как потом возобновить с паузы, без использования GUI?
Код: Выделить всё
if (Input.GetAxis("Vertical") != 0)
   {
       Time.timeScale = 0;
   }

На этом игра "заканчивается", что вполне понятно поскольку течение времени становится = 0.
Thifeo: The Ultimate Dream - Arcade Unity Game in development.
Аватара пользователя
BORODA
UNIт
 
Сообщения: 57
Зарегистрирован: 12 фев 2010, 17:51
Откуда: Львов
Skype: OSXX86
  • Сайт

Re: Пауза приложения (StandAlone)

Сообщение mvladlin 17 фев 2010, 18:38

Time.timeScale = 1; ;)
Аватара пользователя
mvladlin
UNIт
 
Сообщения: 112
Зарегистрирован: 11 июл 2009, 19:53
Откуда: MO

Re: Пауза приложения (StandAlone)

Сообщение Neodrop 17 фев 2010, 19:54

Убил просто... =))
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Пауза приложения (StandAlone)

Сообщение BORODA 17 фев 2010, 21:11

В примере указанном мной выше, игра входит в пермапаузу. Можете сами проверить. (разве что я что-то не так делаю)
Нет смысла в этой команде в таком случае.
Я активирую перемещение объекта по тригеру.
Я пишу timeScale = 0;
Возвращаю объект назад.
Выставляю timeScale = 1;
Разницы что с timeScale, что без никакой. Ну и зачем оно надо?
Моя цель - сделать паузу между инструкциями в коде, во время которых игра должна быть "на паузе".
Thifeo: The Ultimate Dream - Arcade Unity Game in development.
Аватара пользователя
BORODA
UNIт
 
Сообщения: 57
Зарегистрирован: 12 фев 2010, 17:51
Откуда: Львов
Skype: OSXX86
  • Сайт

Re: Пауза приложения (StandAlone)

Сообщение Zaicheg 17 фев 2010, 21:31

BORODA писал(а):Моя цель - сделать паузу между инструкциями в коде

StartCoroutine

Нет смысла в этой команде в таком случае.

Значение ввода по оси при таймскейле 0 не возвращается к нулю — это да. Однако, в общепринятом варианте паузы (по нажатию клавиши) всё работает замечательно.
Хотя в вашем случае можно сделать
if (Input.GetAxis("Vertical") > 0)
Time.timeScale = 0;
else
Time.timeScale = 1;
И при нажатии на негативную клавишу оси ("s" в данном случае) таймскейл станет 1.

Хотя я думаю, что есть и более изящные решения. Сам с этой переменной не работал.
Дьяченко Роман
e-mail: _zaicheg.reg@gmail.com
skype: zaicheg12
vkontakte: _vk.com/zaichegq
Работа: _wie3.com _www.sanviz.com
Аватара пользователя
Zaicheg
Адепт
 
Сообщения: 3024
Зарегистрирован: 19 июн 2009, 15:12
Откуда: Череповец

Re: Пауза приложения (StandAlone)

Сообщение BORODA 17 фев 2010, 21:43

Вообще я просто привел пример как можно этой командой залочить геймплей. Ту задачу я решил через Singleton и небольшой модификации геймплея.

О StartCoroutine.
Note that this does not block the Update method -- it will immediately head onto the subsequent code.

А мне как раз его и надо заблочить. Персонаж попадает на ловушку -> Ловушка срабатывает -> Пауза на 2 секунды -> Респавн -> Ловушка возвращается в исходное положение. Так что-бы было видно что его убило. Сейчас - Персонаж попадает на ловушку -> Ловушка срабатывает -> Респавн -> Ловушка возвращается в исходное положение. Все происходит в мгновение ока.
Хотя скорее это нужно делать так:

Синтаксис:
Используется csharp
private bool isDead

IEnumerator Kill(float waitTime)
{
    /* Insert attack code here */
    isDead = false;
    yield return new WaitForSeconds(waitTime);
    isDead = true;
}

 void OnTriggerEnter(Collider col)
    {
        //Spike trap
        if (col.collider.name == "SpikeTrap")
        {            
   
            SpikedTrap();
            Kill(2);
        }
    }

void Update()
{
if (isDead)
{
respawn();
}
}


Хотя тут опять задача блокировки инпута пользователя.
Thifeo: The Ultimate Dream - Arcade Unity Game in development.
Аватара пользователя
BORODA
UNIт
 
Сообщения: 57
Зарегистрирован: 12 фев 2010, 17:51
Откуда: Львов
Skype: OSXX86
  • Сайт

Re: Пауза приложения (StandAlone)

Сообщение Paul Siberdt 17 фев 2010, 22:34

Думаю, не Time вам надо блочить, а, если правда хотите временем управлять - элементы игровой механики подвяжите на свое время, производную от Time, и всегда с ним работайте, останавливая и запуская, как угодно.
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5